我知道如何合并Python字典,包括:不覆盖值的合并字典、多个Python字典的合并、如何合并多个具有相同键的字典?以及如何在单个表达式中合并两个Python字典。
然而,我的问题略有不同。假设我有这三个字典:
合并后的结果应该是:
这段代码可以正常运行,但会在列表中嵌套其他列表。
然而,我的问题略有不同。假设我有这三个字典:
dict_a = {'a': [3.212], 'b': [0.0]}
dict_b = {'a': [923.22, 3.212], 'c': [123.32]}
dict_c = {'b': [0.0]}
合并后的结果应该是:
result_dict = {'a': [3.212, 3.212, 923.22], 'b': [0.0, 0.0], 'c': [123.32]}
这段代码可以正常运行,但会在列表中嵌套其他列表。
result_dict = {}
dicts = [dict_a, dict_b, dict_c]
for d in dicts:
for k, v in d.iteritems():
result_dict.setdefault(k, []).append(v)
使用extend
而不是append
可以防止嵌套列表,但如果键不存在,则无法工作。因此,基本上应该执行一个没有覆盖的update
,如其他线程中所述。
抱歉,这是我方面的错误。昨天太晚了,我没有注意到抛出错误的行不是我想象的那一行,因此假设我的字典已经具有上述结构。mgilson
实际上是正确的,假设它与TypeError
有关。确切地说,是“不可迭代浮点数”。
extend
不起作用吗?setdefault(k, [])
不应该解决不存在的键问题吗? - DSMa
的结果列表会以那个顺序结束?我本来期望是:[3.212,923.22,3.212]
。 - mgilson