合并字典和列表

pyl*_*ner 1 python dictionary list dataframe python-3.x

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

dict1 = {'a': 1, 'b': 2}
list1 = [{'c': 3}, {'d':4}]
emptydict = {}
emptylist = []
Run Code Online (Sandbox Code Playgroud)

尝试合并并使其成为最终的字典,如下所示。

final = {'a': 1, 'b': 2, 'c': 3, 'd':4}
Run Code Online (Sandbox Code Playgroud)

代码:

final = {**dict1, **list1[0], **list1[1], **emptydict, **emptylist} 
Run Code Online (Sandbox Code Playgroud)

在这里,我不知道 list1 的长度,有人可以建议我比这更好的方法吗?

Kon*_*lph 5

dict.update更新现有字典。不幸的是,它是一种不返回值的变异方法。因此,适应它functools.reduce需要一个包装器。

因此,我很想使用一个很好的旧循环:

final = dict(dict1)
for d in list1:
    final.update(d)
Run Code Online (Sandbox Code Playgroud)

但为了完整起见,这里有一种使用方法functools.reduce

import functools

def dict_update(d, v):
    d.update(v)
    return d

final = functools.reduce(dict_update, list1, dict1.copy())
Run Code Online (Sandbox Code Playgroud)

  • 使用“reduce”来处理这样的副作用很令人困惑,最好只做“final = reduce(dict_update, list1, dict1.copy())”之类的事情 (2认同)