python:如何根据值合并字典列表中的字典

2024-04-01

我有一个字典列表,其中每个字典由 3 个键组成:名称、url 和位置。
在整个字典中,只有“name”的值可以相同,并且“url”和“location”在整个列表中始终是不同的值。

Example:

[
{"name":"A1", "url":"B1", "location":"C1"}, 
{"name":"A1", "url":"B2", "location":"C2"}, 
{"name":"A2", "url":"B3", "location":"C3"},
{"name":"A2", "url":"B4", "location":"C4"}, ...
]  

然后我想根据“名称”中的值对它们进行分组,如下所示。

预期的:

[
{"name":"A1", "url":"B1, B2", "location":"C1, C2"},
{"name":"A2", "url":"B3, B4", "location":"C3, C4"},
]

(实际列表包含 >2,000 个字典)

我很高兴能够解决这个问题。
任何建议/答案将不胜感激。

提前致谢。


由于您的数据集相对较小,所以我想时间复杂度在这里并不是什么大问题,因此您可以考虑以下代码。

from collections import defaultdict
given_data = [
    {"name":"A1", "url":"B1", "location":"C1"}, 
    {"name":"A1", "url":"B2", "location":"C2"}, 
    {"name":"A2", "url":"B3", "location":"C3"},
    {"name":"A2", "url":"B4", "location":"C4"},
] 
D = defaultdict(list)
for item in given_data:
    D[item['name']].append(item)
result = []
for x in D:
    urls = ""
    locations = ""
    for pp in D[x]:
        urls += pp['url']+" "
        locations += pp['location']+" "
    result.append({'name': x, 'url': urls.strip(), 'location': locations.strip()})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python:如何根据值合并字典列表中的字典 的相关文章

随机推荐