gpt4 book ai didi

python - 按值对 python 字典中的键/值对进行分组,保持原始键关联

转载 作者:行者123 更新时间:2023-11-28 22:16:03 25 4
gpt4 key购买 nike

寻找一种有效的方法来根据相似性对字典中的值进行分组,从而生成一个将原始键分组为列表的倒排字典。我可以想到一些笨拙的方法来做到这一点,但我对其他方法感兴趣。

假设我有如下所示的字典:

{'d1': {'goober': True, 'horse': 42},
'd2': {'goober': True, 'horse': 42},
'd3': {'goober': False, 'horse': 71}}

我想要的字典可能如下所示:

{'group1': {'dict': {'goober': True, 'horse': 42}, 'keys': ['d1', 'd2']},
'group2': {'dict': {'goober': False, 'horse': 71}, 'keys': ['d3']}}

重要的细节是,原始键 d1d2 已被分组到任意命名的 group1 下,并按其相同的键分组来自原始词典的词典。维护原始键(存储在 keys 列表中的 d1d2)以及它们与什么字典关联也很重要。 d3 是单独的,因为它的字典是唯一的。

我更大的目标是获取包含用于其他目的的参数的字典字典,但将它们分组在参数相同的地方,这样我就可以更高效地将它们一起运行。

如有任何提示或建议,我们将不胜感激!

最佳答案

您可以使用itertools.groupby:

d = {'d1': {'goober': True, 'horse': 42},
'd2': {'goober': True, 'horse': 42},
'd3': {'goober': False, 'horse': 71}}
from itertools import groupby
from operator import itemgetter
l = [{'dict': k, 'keys': list(map(itemgetter(0), g))} for k, g in groupby(sorted(d.items(), key=lambda t: t[1].items()), itemgetter(1))]

这样l就会变成:

[{'dict': {'goober': True, '马': 42}, 'keys': ['d1', 'd2']}, {'dict': {'goober' : False, '马': 71}, ' key ': ['d3']}]

关于python - 按值对 python 字典中的键/值对进行分组,保持原始键关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52484043/

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