基于键值pai的Python更新字典

2024-06-25 06:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题是如何检查两个字典列表和相同的键,并用另一个字典的键值对更新主字典。在

第一本字典

main = [
{'country': u'CYPRUS', 'naziv': 'AKEL', 'FCI': 2}, 
{'country': u'CYPRUS', 'naziv': 'DIKO', 'FCI': 4}, 
]

第二个

^{pr2}$

最终输出-示例

output = [
    {'country': u'CYPRUS', 'naziv': 'AKEL', 'FCI': 2,'likes': '8625.00', 'talks': '1215.00'}
    {'country': u'CYPRUS', 'naziv': 'DIKO', 'FCI': 4,'likes': '2746.00', 'talks': 0}, 
]

有什么快速的方法吗。我试着更新一本词典,但没用。在

for dt, k in itertools.groupby(sorted(second, key=itemgetter('naziv')), key=itemgetter('naziv')):
    maindict = {'naziv': dt}
    for d in k:
        maindict.update(d)
    main.append(maindict)

Python 2.7


Tags: keyinfor字典maindtcountrylikes
2条回答

另一个可能是-

import itertools
main = [
{'country': u'CYPRUS', 'naziv': 'AKEL', 'FCI': 2}, 
{'country': u'CYPRUS', 'naziv': 'DIKO', 'FCI': 4}, 
]
second = [
{'likes': '8625.00', 'talks': '1215.00', 'naziv': 'AKEL'}, 
{'likes': '2746.00', 'talks': 0, 'naziv': 'DIKO'}, 
]


lst = sorted(itertools.chain(main,second), key=lambda x:x['naziv'])
list_c = []
for k,v in itertools.groupby(lst, key=lambda x:x['naziv']):
    d = {}
    for dct in v:
        d.update(dct)
    list_c.append(d)
print list_c

“麦格尔森的谢梅利斯副本”

为什么不用second字典中相同的key值更新main字典列表,只需这样做:

>>> for i,d in enumerate(second):
    main[i].update(second[i])


>>> main
[{'likes': '8625.00', 'FCI': 2, 'talks': '1215.00', 'country': u'CYPRUS', 'naziv': 'AKEL'}, {'likes': '2746.00', 'FCI': 4, 'talks': 0, 'country': u'CYPRUS', 'naziv': 'DIKO'}]

相关问题 更多 >