一、字典的概念
1、字典用于保存具有映射关系的数据,字典相当于保存了两组数据,其中一组数据被称为key,另一组数据可通过key来访问,被称为value
2、字典中key和value的关系如下,且key不允许重复
二、创建字典
1、花括号法:花括号应包含多组key-value对,key与value之间用英文冒号隔开,多组key-value对之间用英文逗号隔开
scores = {'语文': 80, '数学': 100, '英语': 90}
print(scores) # {'语文': 80, '数学': 100, '英语': 90}
2、dict构造器:可以传入多个列表或元组参数作为key-value对,也可为dict指定关键字参数创建字典,此时字典的key不允许用表达式
scores = dict([('语文', 80), ('数学', 100), ('英语', 90)])
print(scores) # {'语文': 80, '数学': 100, '英语': 90}
scores = dict('语文' = 80, '数学' = 100, '英语' = 90)
print(scores) # {'语文': 80, '数学': 100, '英语': 90}
字典的key是不可变的,因此列表不能作为字典的key
三、通过key访问value
scores = dict('语文' = 80, '数学' = 100, '英语' = 90)
print(scores['语文']) # 80
四、修改key-value对
scores = dict('语文' = 80, '数学' = 100, '英语' = 90)
# 添加key-value对:对不存在的key赋值
score['生物'] = 91
print(scores) # {'语文': 80, '数学': 100, '英语': 90, '生物': 91}
# 替换key-value对:对原有的key赋值
score['数学'] = 95
print(scores) # {'语文': 80, '数学': 95, '英语': 90, '生物': 91}
# 删除key-value对:del 方法
del scores['数学']
print(scores) # {'语文': 80, '英语': 90, '生物': 91}
五、in 运算符
使用in、not in可判断dict是否包含指定的key
scores = dict('语文' = 80, '数学' = 100, '英语' = 90)
print('数学' in scores) # True
print('生物' in scores) # False
六、字典常用方法
1、调用 dir(dict) 可查看字典的所有方法
可通过快捷键 windows+R 并输入 cmd 进入命令提示符
输入 python 并回车 -> 输入 dir(dict) 并回车
scores = {'语文': 80, '数学': 100, '英语': 90}
scores.update({'语文': 89, '生物': 99})
print(scores) # {'语文': 80, '数学': 100, '英语': 90, '生物': 99}
scores = dict('语文' = 80, '数学' = 100, '英语' = 90)
for key in scores.keys():
print(key) # 语文 数学 英语
for value in scores.values():
print(value) # 80 100 90
for key, value in scores.items():
print(key, value) # 语文 80 数学 100 英语 90
scores = dict('语文' = 80, '数学' = 100, '英语' = 90)
print(scores.setdefault('语文', 60)) # 60
print(scores.setdefault('生物', 80)) # 80
print(scores) # {'语文': 60, '数学': 100, '英语': 90, '生物': 80}
scores = dict.fromkeys(['语文', '数学', '英语'])
print(scores) # ['语文': None, '数学': None, '英语': None]
七、用字典格式化字符串
可在字符串模板中按key指定变量,然后通过字典为字符串模板中key设置值
# 用元组来格式化字符串,所以它根据位置来填充占位符
s1 = "图书名为:%s,价格为:%10.2f"
print(s1 % ("疯狂python讲义", 128))
# 图书名为:疯狂python讲义,价格为: 128.00
# 用字典来格式化字符串,所以它key来填充占位符
s2 = "图书名为:%(name)s,价格为:%(price)10.2f"
print(s2 % {price: 128, name: "疯狂python讲义"})
# 图书名为:疯狂python讲义,价格为: 128.00