gpt4 book ai didi

python - 字典 python 的组列表

转载 作者:行者123 更新时间:2023-11-28 20:15:29 26 4
gpt4 key购买 nike

如何将字典中相似的键分组到列表中

如果我有

data = [{'quantity': 2, 'type': 'Vip'}, {'quantity': 23, 'type': 'Vip'}, {'quantity': 2, 'type': 'Regular'}, {'quantity': 2, 'type': 'Regular'}, {'quantity': 2, 'type': 'Regular'}, {'quantity': 2, 'type': 'Regular'}]

我希望它像这样输出

res = {'Regular': [{'quantity': 2, 'type': 'Regular'},{'quantity': 2, 'type': 'Regular'},{'quantity': 2, 'type': 'Regular'}], 'Vip': [{'quantity': 23, 'type': 'Vip'},{'quantity': 23, 'type': 'Vip'}]}

这是我试过的代码,但它给了我双倍的 key ,可能是因为循环

 res = defaultdict(list)
for i in data:
if len(res) >= 1:
for q in res:
if q == i['type']:
res[q].append(i)
break
else:
res[i['type']].append(i)
break
res[i['type']].append(i)

最佳答案

我认为您还没有完全理解defaultdict 的概念。如果在查找时不存在,defaultdict 将生成一个新对象。

所以你可以简单地使用:

from collections import defaultdict

res = defaultdict(list)

for i in data:
res[i['type']].append(i)

产生:

>>> pprint(res)
defaultdict(<class 'list'>,
{'Regular': [{'quantity': 2, 'type': 'Regular'},
{'quantity': 2, 'type': 'Regular'},
{'quantity': 2, 'type': 'Regular'},
{'quantity': 2, 'type': 'Regular'}],
'Vip': [{'quantity': 2, 'type': 'Vip'},
{'quantity': 23, 'type': 'Vip'}]})

(pprint漂亮打印,但不改变内容)。

请注意,这里我们将字典的引用复制到新列表中,因此我们不会创建新字典。此外,结果是一个 defaultdict。我们可以使用 dict(res) 将其转换为 vanilla 字典。

关于python - 字典 python 的组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46844833/

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