本文介绍了如果字典中的键值具有共同的键值对,那么如何合并这些键值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个字典列表,
list = [
{'hostname': 'a', 'ipaddr':'abcde'},
{'hostname': 'a', 'ipaddr':'fghijkl'},
{'hostname': 'a', 'ipaddr':'bbbbbb'},
{'hostname': 'b', 'ipaddr':'xxxx'}
]
如何使输出看起来像这样:
How do I make it so that the output looks like this:
outputList = [
{
'hostname': 'a',
'ipaddr': ['abcde', 'fghijkl', 'bbbbbb']
},
{
'hostname': 'b',
'ipaddr':'xxxx'
}
]
修改:在执行此步骤之前,我已经过滤了选定主机名的JSON列表
Edit:Before this step, I have filtered a JSON list of selected hostnames
['hostname1', 'hostname2', 'hostname3', 'hostname4' ......]
然后,给定一个庞大的JSON字典列表(以上称为列表"),我必须筛选出各自的主机名和ipaddress,最好根据主机名进行分组,以便可以在其他地方轻松解析它.
Then, given a huge JSON list of dictionaries (called "list" above), I have to sieve out the respective hostnames and ipaddresses, preferably grouped according to hostnames so that I can parse it elsewhere easily.
推荐答案
这是一种方法:
inputList = [
{'hostname': 'a', 'ipaddr':'abcde'},
{'hostname': 'a', 'ipaddr':'fghijkl'},
{'hostname': 'a', 'ipaddr':'bbbbbb'},
{'hostname': 'b', 'ipaddr':'xxxx'}
]
outputList = {}
for d in inputList:
od = outputList.setdefault(d['hostname'], {})
od.setdefault('hostname', d['hostname'])
od.setdefault('ipaddr', []).append(d['ipaddr'])
outputList = sorted(outputList.values(), key=lambda x: x['hostname'])
assert outputList == [
{
'hostname': 'a',
'ipaddr': ['abcde', 'fghijkl', 'bbbbbb']
},
{
'hostname': 'b',
'ipaddr':['xxxx']
}
]
这篇关于如果字典中的键值具有共同的键值对,那么如何合并这些键值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!