【发布时间】:2021-02-27 03:26:18
【问题描述】:
我有使用循环创建的字典:
for (obj1, obj2), df in df2.groupby(['a', 'b']):
obj_dict = (df
.query('a == @obj1')
.query('b == @obj2')
.set_index('b')['c']
.to_dict()
)
print(obj_dict)
这是结果:
{'2': '3'}
{'5': '6'}
{'8': '9'}
我想将这些字典合并成一个如下所示的字典:
{'2': '3','5': '6','8': '9'}
我已尝试按照建议的here 使用.update,但这似乎不起作用:
for (obj1, obj2), df in df2.groupby(['a', 'b']):
obj_dict = (df
.query('a == @obj1')
.query('b == @obj2')
.set_index('b')['c']
.to_dict()
)
print(obj_dict)
result = {}
for d in obj_dict:
print(d)
result.update(d)
结果:
{'2': '3'}
2
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-107-ca40733d19d7> in <module>
10 for d in obj_dict:
11 print(d)
---> 12 result.update(d)
ValueError: dictionary update sequence element #0 has length 1; 2 is required
我真的不明白为什么结果中的d 只是键而不是实际的字典。
【问题讨论】:
-
如果你遍历一个字典,你会得到一个遍历它的键的迭代器。如果你想要键和值,那么迭代 dict.items()。
标签: python list dictionary merge