无论是参加Python培训还是自学,都会接触到Python字典这一章节,字典是Python中比较常用的数据结构,字典中每个成员是以“键:值”对的形式存放具有映射关系的数据。
字典语法:
字典以大括号“{}”包围的以“键:值”对方式声明和存在的数据集合,“键:值”对之间用“英文逗号”隔开。
如下代码创建了一个字典:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict)
·字典的每个健值的展现方式是:key:value用冒号分割;
·键值之间为逗号分割;
·整个字典用大括号{}将键值括起来;
·字典是无序的,它不能通过偏移来存取,只能通过键来存取;
·键必须是唯一;
·键必须是不可变的数据类型,比如,数字,字符串,元组等,列表等可变对象不能作为键;
·键值可以是任意类型的对象;
通过 key 访问value,演示如下:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict['语文']) # 通过键“语文”获取对应的值
通过 key 添加 key-value 对,演示如下:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict['物理'] = 97 # 添加 ‘物理’: 97
print(scores_dict) # {'语文': 105, '数学': 140, '英语': 120, '物理': 97}
·能删单一的元素
通过 key 删除 key-value 对,演示如下:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
del scores_dict['数学'] # 删除 ’语文‘: 105
print(scores_dict) # 输出 {'语文': 105, '英语': 120}
通过 key 修改 key-value 对,演示如下:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict['数学'] = 120 # 修改将“数学”修改为120
print(scores_dict) # 输出 {'语文': 105, '数学': 120, '英语': 120}
如果要判断字典是否包含指定的 key,则可以使用 in 或 not in 运算符。需要指出的是,对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。例如如下代码:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
# 判断scores_dict是否包含名为'语文'的key
print('语文' in scores_dict) # True
# 判断scores_dict不包含'历史'的key
print('历史' not in scores_dict) # True
clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict) # 输出 {'语文': 105, '数学': 140, '英语': 120}
scores_dict.clear() # 删除字典所有内容
print(scores_dict) # 输出{}
get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。例如如下代码:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.get('历史')) # 输出 None
print(scores_dict['历史']) # 报错 KeyError: '历史'
update() 方法可使用一个字典所包含的 key-value 对来更新己有的字典。在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。例如如下代码:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict.update({'语文': 120, '数学': 110})
print(scores_dict) # 输出{'语文': 120, '数学': 110, '英语': 120}
以列表返回可遍历的(键, 值) 元组数组
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.items()) # 输出 dict_items([('语文', 105), ('数学', 140), ('英语', 120)])
以列表返回一个字典所有的键
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.keys()) # 输出 dict_keys(['语文', '数学', '英语'])
以列表返回字典中的所有值
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.values()) # 输出 dict_values([105, 140, 120])
pop() 方法用于获取指定 key 对应的 value,并删除这个 key-value 对。如下方法示范了 pop() 方法的用法:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict.pop('英语') # 删除'英语'的键和值
print(scores_dict) # 输出{'语文': 105, '数学': 140}
popitem() 方法用于弹出字典中最后一个key-value对
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.popitem()) # 输出('英语', 120)
setdefault() 方法也用于根据 key 来获取对应 value 的值。但该方法有一个额外的功能,即当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的值。
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
# 设置'语文'默认值为100
scores_dict.setdefault('语文', 100)
print(scores_dict) # 输出{'语文': 105, '数学': 140, '英语': 120}
# 设置'历史'默认值为140
scores_dict.setdefault('历史', 140)
print(scores_dict) # 输出{'语文': 105, '数学': 140, '英语': 120, '历史': 140}
fromkeys() 方法使用给定的多个key创建字典,这些key对应的value默认都是None;也可以额外传入一个参数作为默认的value。该方法一般不会使用字典对象调用(没什么意义),通常会使用 dict 类直接调用。例如如下代码:
scores_dict = dict.fromkeys(['语文', '数学'])
print(scores_dict) # 输出{'语文': None, '数学': None}
scores_dict = dict.fromkeys(('语文', '数学'))
print(scores_dict) # 输出{'语文': None, '数学': None}
# 使用元组创建包含2个key的字典,指定默认的value
scores_dict = dict.fromkeys(('语文', '数学'), 100)
print(scores_dict) # 输出{'语文': 100, '数学': 100}
计算字典元素个数,即键的总数。
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(len(scores_dict)) # 输出 3
输出字典可打印的字符串
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(str(scores_dict)) # 输出{'语文': 105, '数学': 140, '英语': 120}
返回输入的变量类型,如果变量是字典就返回字典类型。
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(type(scores_dict)) # 输出
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key in scores_dict:
print(key)
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for value in scores_dict.values():
print(value)
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key in scores_dict:
print(key + ":" + str(scores_dict[key])) # 返回字符串
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for i in scores_dict.items():
print(i) # 返回元组
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key, value in scores_dict.items():
print(key + ':' + str(value))