我有以下字典的python列表:
list= [{'_id': 'EF25E6D', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns1.netnames.net.'}]},{'_id': 'EF25E6D', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns2.netnames.net.'}]},
{'_id': 'EF25E6D', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns5.netnames.net.'}]},{'_id': 'EF25E6D', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns6.netnames.net.'}]},
{'_id': '7E00EAC', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns1.netnames.net.'}]},{'_id': '7E00EAC', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns2.netnames.net.'}]},
{'_id': '7E00EAC', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns5.netnames.net.'}]},{'_id': '7E00EAC', 'RecordSets': [{'Name': '@', 'TTL': '', 'Type': '', 'Value': 'ns6.netnames.net.'}]}]
如何对这些进行分组,以便获得唯一的_id和记录集列表?
非常感谢任何建议。
答案 0 :(得分:0)
乍一看,这看起来像是collections.defaultdict
的工作:
from collections import defaultdict
dd = defaultdict(list)
for item in records: # make sure your list is not named "list"; better use "records"!
dd[item["id"]].append(item["RecordSets"])
结果是一个包含
的字典对象{'7E00EAC': [[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns1.netnames.net.'}],
[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns2.netnames.net.'}],
[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns5.netnames.net.'}],
[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns6.netnames.net.'}]],
'EF25E6D': [[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns1.netnames.net.'}],
[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns2.netnames.net.'}],
[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns5.netnames.net.'}],
[{'Name': '@',
'TTL': '',
'Type': '',
'Value': 'ns6.netnames.net.'}]]
}
如果您的所有记录集只有一个项目(如您的示例所示),请使用
dd[item["id"]].append(item["RecordSets"][0])
避免不必要的嵌套列表。