合并字典和列表

时间:2020-09-09 19:14:09

标签: python python-3.x list dataframe dictionary

我正在尝试将字典和包含字典和空字典的列表组合在一起

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的长度,有人能建议我一个比这更好的方法吗?

3 个答案:

答案 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将字典列表合并为一个字典。然后使用**运算符合并dict1dict(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)