基于键值对的Python更新字典 [英] Python update dictionary based on key value pair

查看:171
本文介绍了基于键值对的Python更新字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题是如何检查两个词典列表和相同的键,以及如何使用其他词典中的键值对更新主词典.

this question is how to check two dictionary list and for same keys and update main dictionary with key value pair from other dictionary.

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'}, 
]

最终输出-示例

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}, 
]

有没有快速的方法可以做到这一点.我正在尝试更新一本字典,但不起作用.

Is there any fast way to do this. I was trying with update one dictionary but dont works.

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

Python 2.7

推荐答案

另一个可能是-

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

吉尔森的无表情副本"

"Shemeless copy of mgilson"

这篇关于基于键值对的Python更新字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆