gpt4 book ai didi

python - 将 Python 字典键分组为列表,并以此列表为值创建一个新字典

转载 作者:IT老高 更新时间:2023-10-28 22:02:24 27 4
gpt4 key购买 nike

我有一本 python 字典

d = {1: 6, 2: 1, 3: 1, 4: 9, 5: 9, 6: 1}

由于上述字典中的值不是唯一的,我想将唯一值的所有键分组为一个列表并创建一个新字典,如下所示:

v = {6:[1], 1:[2, 3, 6], 9: [4, 5]}

注意新字典v的键应该排序。我发现很难想象和实现这个字典创建。

最佳答案

使用 collections.defaultdict为了方便:

from collections import defaultdict

v = defaultdict(list)

for key, value in sorted(d.items()):
v[value].append(key)

但你也可以使用标准的 dict 来做到这一点,使用 dict.setdefault() :

v = {}

for key, value in sorted(d.items()):
v.setdefault(value, []).append(key)

以上排序键first;稍后对输出字典的值进行排序更加麻烦和低效。

如果有人不需要需要对输出进行排序,您可以放弃 sorted() 调用,并使用 sets(键在输入字典中保证是唯一的,所以不会丢失任何信息):

v = {}

for key, value in d.items():
v.setdefault(value, set()).add(key)

生产:

{6: {1}, 1: {2, 3, 6}, 9: {4, 5}}

(集合值的输出排序是巧合,是整数哈希值实现方式的副作用;集合是无序结构)。

关于python - 将 Python 字典键分组为列表,并以此列表为值创建一个新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15751979/

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