gpt4 book ai didi

Python:在键相同的字典列表中组合唯一值?

转载 作者:行者123 更新时间:2023-12-03 14:13:02 24 4
gpt4 key购买 nike

我不确定我是否以正确的方式提问,但这是我的问题:
我有以下格式的字典列表:

[
{'user': 'joe', 'IndexUsed': 'a'},
{'user': 'joe', 'IndexUsed': 'a'},
{'user': 'joe', 'IndexUsed': 'a'},
{'user': 'joe', 'IndexUsed': 'b'},
{'user': 'admin', 'IndexUsed': 'a'},
{'user': 'admin', 'IndexUsed': 'c'},
{'user': 'hugo', 'IndexUsed': 'a'},
{'user': 'hugo', 'IndexUsed': 'd'},
...
]
我希望我的最终结果如下所示:
[
{'user': 'joe', 'IndexUsed': ['a', 'b']},
{'user': 'admin', 'IndexUsed': ['a', 'c']},
{'user': 'hugo', 'IndexUsed': ['a', 'd']},
]
本质上,对 IndexUsed 中的唯一字段进行组合/重复数据删除并将它们减少到每个 user 只有一个字典
我已经研究过使用 reducer 、字典理解并在 StackOverflow 上进行搜索,但是我在使用字符串查找用例时遇到了一些麻烦。我发现的大多数示例都使用整数将它们组合成最终的 int/float,但在这里我更愿意将它组合成一个最终的字符串。你能帮我理解如何解决这个问题吗?

最佳答案

from collections import defaultdict


data = [{'IndexUsed': 'a', 'user': 'joe'},
{'IndexUsed': 'a', 'user': 'joe'},
{'IndexUsed': 'a', 'user': 'joe'},
{'IndexUsed': 'b', 'user': 'joe'},
{'IndexUsed': 'a', 'user': 'admin'},
{'IndexUsed': 'c', 'user': 'admin'},
{'IndexUsed': 'a', 'user': 'hugo'},
{'IndexUsed': 'd', 'user': 'hugo'}]

indexes_used = defaultdict(set)
for d in data:
indexes_used[d['user']].add(d['IndexUsed'])

result = []
for k, v in indexes_used.items():
result.append({'user': k, 'IndexUsed': sorted(list(v))})

print(*result)
输出:
{'user': 'joe', 'IndexUsed': ['a', 'b']} {'user': 'admin', 'IndexUsed': ['a', 'c']} {'user': 'hugo', 'IndexUsed': ['a', 'd']}
注意:对于不知情的, defaultdict使用传递的函数(在本例中为 set)作为工厂来创建新的缺失键对应值。所以 indexes_used的每一个键设置为 set填充了使用过的索引。使用 set也忽略重复。到底 set转换为排序列表,同时创建所需的键 IndexUsed .

关于Python:在键相同的字典列表中组合唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65685996/

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