我是 Jerry,一个正在学 Python 的普通人。
前面写了列表、元组,今天聊聊字典 。
一、字典到底是啥?
简单说,字典就是带名字的标签盒。
列表像排队,找人得数:第 0 个、第 1 个、第 2 个... 麻烦。
字典像抽屉,每个抽屉贴个标签,直接拉开就行。
# 列表写法,你得记 0 是水果,1 是颜色...fruit= ["苹果", "红色", "山东"]print(fruit[0]) # 苹果# 字典写法,一看就懂movie= {"name": "苹果","color": "红色","place": "山东"}print(movie["name"]) # 苹果print(movie["place"]) # 山东记住三点:
键(key)不能重复,值随便重复
键只能用字符串、数字、元组
查找贼快,百万数据也是瞬间
二、怎么取数据?两种方式
方式一:直接硬刚(不保险)
info= {"name": "苹果", "place": "山东"}print(info['place']) # 山东,没问题# print(info['money']) # 报错!KeyError你要是访问了个不存在的键,程序会直接报错。
方式二:用 get()(保险)
info= {"name": "苹果", "place": "山东"}print(info.get('name')) # 苹果print(info.get('money')) # None,不报错print(info.get('money', 0)) # 0,获取不到,给默认值建议:不确定有没有的键,一律用 get()。
三、看看字典里有啥
phone= {"name": "iPhone17", "price": 10000, "color": "红色"}# 有几个键值对?print(len(phone)) # 3# 所有键print(phone.keys()) # dict_keys(['name', 'price', 'color'])# 所有值print(phone.values()) # dict_values(['iPhone17', 10000, '红色'])# 所有键值对print(phone.items()) # dict_items([('name', 'iPhone17'), ...])
四、遍历字典,三种姿势
phone= {"name": "iPhone17", "price": 10000, "color": "红色"}# 姿势一:只拿键(默认)for key in phone:print(key)# name price color# 姿势二:只拿值for v in phone.values():print(v)# iPhone17 10000 红色# 姿势三:键值一起拿(最常用)for k, v in phone.items():print(f"{k}: {v}")# name: iPhone17# price: 10000# color: 红色第三种写得多,记住就行。
五、合并两个字典
person= {"name": "张三", "money": 1999}extra= {"age": 23, "city": "北京"}person.update(extra)print(person)# {'name': '张三', 'money': 1999, 'age': 23, 'city': '北京'}如果两个字典有相同的键,后面的会覆盖前面的。
六、增删改查,一气呵成
phone= {"name": "iPhone17", "price": 10000, "color": "红色"}# ===== 增 =====phone["size"] =6.8print(phone)# {'name': 'iPhone17', 'price': 10000, 'color': '红色', 'size': 6.8} ,多了 size: 6.8# ===== 改 =====phone['color'] ="土豪金"# 红色太普通,换土豪金print(phone) # {'name': 'iPhone17', 'price': 10000, 'color': '土豪金', 'size': 6.8}
# ===== 删 =====# 删指定键phone.pop("color")print(phone)# {'name': 'iPhone17', 'price': 10000, 'size': 6.8}
# 删最后一对phone.popitem()print(phone)# {'name': 'iPhone17', 'price': 10000}
# 全删光phone.clear()print(phone) # 空了,{}
七、实战:统计单词出现次数
写个实用的小功能:统计一句话里每个词出现几次。
sentence="我 喜欢 Python Python 真的 很 好用 我 喜欢 编程"words=sentence.split() # 按空格切分count= {}for word in words:count[word] =count.get(word, 0) +1print(count)# {'我': 2, '喜欢': 2, 'Python': 2, '真的': 1, '很': 1, '好用': 1, '编程': 1}解释一下:
这代码在实际开发里经常用到,比如统计用户行为、词频分析啥的。
八、什么时候用字典?
| 情况 | 用啥 | 为啥 |
|---|
| 数据有"名字",要快速查找 | 字典 | 直观、快速 |
| 数据有顺序,要按位置取 | 列表 | 支持下标、切片 |
| 数据不能改 | 元组 | 安全、能当字典的键 |
| 要去重 | 集合 | 自动去重,判断成员快 |
最后说两句
字典这玩意儿,看着简单,用起来贼爽。我刚开始学的时候觉得列表就够了,后来写复杂点的程序才发现,没有字典根本玩不转。
今天的内容:
下篇打算写 集合(set),也是个神器。
关注「AI 学习成长记」,我踩过的坑你别再踩。