gpt4 book ai didi

python - 在 Python 中合并重复项时对字典列表进行排序?

转载 作者:太空狗 更新时间:2023-10-30 01:08:57 25 4
gpt4 key购买 nike

所以我有一个像这样的字典列表:

data = [ { 
'Organization' : '123 Solar',
'Phone' : '444-444-4444',
'Email' : '',
'website' : 'www.123solar.com'
}, {
'Organization' : '123 Solar',
'Phone' : '',
'Email' : 'joey@123solar.com',
'Website' : 'www.123solar.com'
}, {
etc...
} ]

当然,这不是确切的数据。但是(也许)从我这里的例子中你可以发现我的问题。我有许多具有相同“组织”名称的记录,但没有一个具有该记录的完整信息。

是否有一种有效方法来搜索列表,根据字典的第一个条目对列表进行排序,最后合并重复项中的数据以创建一个唯一条目? (请记住这些词典非常大)

最佳答案

您可以使用 itertools.groupby :

from itertools import groupby
from operator import itemgetter
from pprint import pprint

data = [ {
'Organization' : '123 Solar',
'Phone' : '444-444-4444',
'Email' : '',
'website' : 'www.123solar.com'
}, {
'Organization' : '123 Solar',
'Phone' : '',
'Email' : 'joey@123solar.com',
'Website' : 'www.123solar.com'
},
{
'Organization' : '234 test',
'Phone' : '111',
'Email' : 'a@123solar.com',
'Website' : 'b.123solar.com'
},
{
'Organization' : '234 test',
'Phone' : '222',
'Email' : 'ac@123solar.com',
'Website' : 'bd.123solar.com'
}]


data = sorted(data, key=itemgetter('Organization'))
result = {}
for key, group in groupby(data, key=itemgetter('Organization')):
result[key] = [item for item in group]

pprint(result)

打印:

{'123 Solar': [{'Email': '',
'Organization': '123 Solar',
'Phone': '444-444-4444',
'website': 'www.123solar.com'},
{'Email': 'joey@123solar.com',
'Organization': '123 Solar',
'Phone': '',
'Website': 'www.123solar.com'}],
'234 test': [{'Email': 'a@123solar.com',
'Organization': '234 test',
'Phone': '111',
'Website': 'b.123solar.com'},
{'Email': 'ac@123solar.com',
'Organization': '234 test',
'Phone': '222',
'Website': 'bd.123solar.com'}]}

更新:

以下是将项目分组到单个字典中的方法:

for key, group in groupby(data, key=itemgetter('Organization')):
result[key] = {'Phone': [],
'Email': [],
'Website': []}
for item in group:
result[key]['Phone'].append(item['Phone'])
result[key]['Email'].append(item['Email'])
result[key]['Website'].append(item['Website'])

然后,在 result 中,您将拥有:

{'123 Solar': {'Email': ['', 'joey@123solar.com'],
'Phone': ['444-444-4444', ''],
'Website': ['www.123solar.com', 'www.123solar.com']},
'234 test': {'Email': ['a@123solar.com', 'ac@123solar.com'],
'Phone': ['111', '222'],
'Website': ['b.123solar.com', 'bd.123solar.com']}}

关于python - 在 Python 中合并重复项时对字典列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com