我正在尝试将字典和包含字典和空字典的列表组合在一起
dict1 = {'a': 1, 'b': 2}
list1 = [{'c': 3}, {'d':4}]
emptydict = {}
emptylist = []
尝试合并并使其成为最终字典,如下所示。
final = {'a': 1, 'b': 2, 'c': 3, 'd':4}
代码:
final = {**dict1, **list1[0], **list1[1], **emptydict, **emptylist}
在这里,我不知道list1的长度,有人能建议我一个比这更好的方法吗?
答案 0 :(得分:5)
dict.update
更新现有字典。不幸的是,这是一种不返回值的变异方法。因此,使其适应functools.reduce
需要包装器。
由于这个原因,我很想使用一个好的旧循环:
final = dict(dict1)
for d in list1:
final.update(d)
但是为了完整起见,这是使用functools.reduce
的一种方法:
import functools
def dict_update(d, v):
d.update(v)
return d
final = functools.reduce(dict_update, list1, dict1.copy())
答案 1 :(得分:4)
如果您使用的是python 3.3+,则可以使用ChainMap将字典列表合并为一个字典。然后使用**
运算符合并dict1
和dict(ChainMap(*list1))
。
from collections import ChainMap
final = {**dict1, **ChainMap(*list1)}
答案 2 :(得分:-1)
我发现此列表可以在线听写
def Convert(list):
res_dct = {list[i]: list[i + 1] for i in range(0, len(lst), 2)}
return res_dct
然后执行以下操作:
def Merge(dict1, dict2):
return(dict2.update(dict1))
final = Merge(Convert(list1), dict1)