字典的合并
1、使用 update() 方法
语法格式:dict1.update(dict2)
方法说明:update() 是在原字典的基础上进行合并,如果不想修改原字典,可以先使用 copy() 把原字典复制一份。
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
print(f'原字典{dict1}')
dict1.update(dict2)
print(f'合并后的字典{dict1}') # {'语文': 112, '数学': 120, '英语': 98, '化学': 90, '生物': 96}
2、使用 for 循环 + dict[key] = v
利用 dict1.items() 获取字典 dict1 的所有键值对,再通过 dict2[key] = value 将键值对存入 dict2 字典中。
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
print(f'合并前dict2 = {dict2}')
# 利用items()获取dict1的所有键值对,再通过[]将键值对存入dict2
for k,v in dict1.items():
dict2[k] = v # 如果key存在,则v覆盖原有的value,如果key不存在,则将这个键值对插入dict2
print(f'合并后dict2 = {dict2}') # {'化学': 90, '生物': 96, '语文': 112, '数学': 120, '英语': 98}
其中:‘for k,v in dict1.items():’ 这一句,是将获得到的键值对二元组(键,值)中的元素分别赋值给 k,v。(Python中可同时向多个变量赋值,但赋值号两边的个数要相同。)
3、使用 | 操作符。
语法格式:dict3 = dict1 | dict2 或者 dict1 |= dict2
dict3 = dict1 | dict2 —-> 将两个字典合并后赋值给dict3。
dict1 |= dict2 —–> 在 dict1 上面直接操作,来进行合并。
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
dict3 = dict1 | dict2
print('合并后:',dict3) # {'语文': 112, '数学': 120, '英语': 98, '化学': 90, '生物': 96}
print(f'合并前:{dict1}')
dict1 |= dict2 # 等价于dict1 = dict1|dict2
print(f'合并后:{dict1}')
4、使用 dict(d1,**d2)
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
dict3 = dict(dict1,**dict2)
print(dict3)
5、使用字典生成式
这里面使用了双层 for 循环,直接看,不太直观。这种方法如果要合并的字典多的话,就不友好了。
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
dict3 = {key:value for d in [dict1,dict2] for key,value in d.items()}
print(dict3)
上面的代码可以拆成下面的代码,这样看起来就比较好理解了:
1)把要合并的两个字典放到一个列表中,for循环遍历列表,挨个处理字典
2)先处理第一个元素 dict1:通过items()获取字典中的键值对,将所有键值对放到新字典dict3中,处理完 dict1,第一层循环外层循环结束。
3)处理第二个元素 dict2,开始新的内层循环,重复2)中的操作,直到处理完所有的元素。
6、使用 dict(**d1, **d2),先解包再合并
使用“**”来解包字典,然后通过 dict() 内置函数或者 {} 来合并即可。
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
dict3 = dict(**dict1,**dict2)
print(dict3)
dict4 = {**dict1,**dict2}
print(dict4)
7、转换成列表进行合并操作
语法格式:dict(list(dict1.items()) + list(dict2.items()))
1)先通过 items() 获取字典的所有键值对,得到的是一个 dict_items 类型的对象;
2)使用 list() 将其转换成列表,利用 + 操作符把列表合并起来;
3)然后使用dict() 将列表转换成字典。
dict1 = {'语文': 112, '数学': 120, '英语': 98}
dict2 = {'化学': 90, '生物': 96}
dict3 = dict(list(dict1.items()) + list(dict2.items()))
print(dict3)
字典的常用方法
1)keys()
获取字典中所有的key。得到的类型是dict_keys,可以通过list()函数将它转换从列表。
语法:dict_name.keys()
score_dict = {'语文': 95, '数学': 100, '英语': 80, '地理': 99}
k = score_dict.keys()
print(k) # dict_keys(['语文', '数学', '英语', '地理'])
print(type(k)) # <class 'dict_keys'>
# 通过list()转换成列表
print(list(k)) # ['语文', '数学', '英语', '地理']
2)values()
获取字典中所有的value。得到的类型是dict_values,可以通过list()函数将它转换从列表。
语法:dict_name.values()
score_dict = {'语文': 95, '数学': 100, '英语': 80, '地理': 99}
# 获取所有的value值
v = score_dict.values()
print(v) # dict_values([95, 100, 80, 99])
print(type(v)) # <class 'dict_values'>
# 将它转换成列表
print(list(v)) # [95, 100, 80, 99]
3)items()
获取字典中所有的key-value对。得到的类型是dict_items,可以通过list()函数将它转换从列表。
语法:dict_name.items()
score_dict = {'语文': 95, '数学': 100, '英语': 80, '地理': 99}
# 获取所有键值对
kv = score_dict.items()
print(kv) # dict_items([('语文', 95), ('数学', 100), ('英语', 80), ('地理', 99)])
print(type(kv)) # <class 'dict_items'>
# 转换成列表,列表是多个二元组组成的
print(list(kv)) # [('语文', 95), ('数学', 100), ('英语', 80), ('地理', 99)]
4)setdefault()
获取指定 key 对应的 value 值,如果指定的 key 不存在时,会默认给 key 设置 value 为 None,也可以自己设置这个默认值。
语法:dict_name.setdefault(key)
score_dict = {'语文': 95, '数学': 100, '英语': 80, '地理': 99}
# 指定的key存在,则返回对应的value
print(score_dict.setdefault('数学')) # 100
# 指定key不存在时,setdefault会先给这个key设置一个默认的value,默认是None,也可以自己设置,再将这个键值对插入字典中
score_dict.setdefault('化学',999)
print(score_dict) # {'语文': 95, '数学': 100, '英语': 80, '地理': 99, '化学': 999}
5)update()
使用指定字典的key-value对已有的字典进行更新。如果被更新的字典已包含相同的key,则key原来对应的value会被覆盖,如果被更新的字典中不包含这个key-value,则该key-value插入被更新的字典中。无返回值。
语法:dict_name.update(new_dict)
score_dict = {'语文': 95, '数学': 100, '英语': 80}
new_dict = {'地理': 99, '数学': 120, '化学': 90}
# '地理'和'化学'在被更新的字典score_dict中不存在,所以直接插入
# '数学'在被更新的字典score_dict中已经存在,所以120会覆盖它原先对应的value
score_dict.update(new_dict)
print(score_dict) # {'语文': 95, '数学': 120, '英语': 80, '地理': 99, '化学': 90}
6)fromkeys()
返回一个给多个键创建的新字典,这些键的默认值都是None,也可以通过参数自己设置。
语法:dict.fromkeys()
lst = ['语文','数学','英语']
dct = dict.fromkeys(lst)
print(dct) # {'语文': None, '数学': None, '英语': None}
dct1 = dict.fromkeys(lst,100)
print(dct1) # {'语文': 100, '数学': 100, '英语': 100}
7)len()
获取字典元素的个数,即键的个数。
score_dict = {'语文': 95, '数学': 100, '英语': 80}
print(len(score_dict)) # 3
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
暂无评论内容