gpt4 book ai didi

python - 从列表列表创建字典。如果键存在,则将项目附加到字典值

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

我有一个这样的列表:

 My_dict={0: ['Name1', 'value1', 'value2',  'value3'],
1: ['Name2', 'value4', 'value5', 'value6'],
2: ['Name1', 'value7', 'value8', 'value9']}

我需要从中创建另一个字典 - 将列表中的第一个值作为键,对于那些重复的键 - 将值附加到值列表。我想看到的结果是:

New_dict= {'Name1': ['value1','value2','value3','value7','value8','value9'],
'Name2': ['value4', 'value5', 'value6']}

现在我正在考虑将字典变成列表列表并创建新字典(但我在创建新字典时重写了值)

lists=[]
My_dict={0: ['Name1', 'value1', 'value2', 'value3'],
1: ['Name2', 'value4', 'value5', 'value6'],
2: ['Name1', 'value7', 'value8', 'value9']}
for v in My_dict.items():
lists.append(v[1])
new_dict={x[0]: x[1:] for x in lists}

关于我应该在何处添加 if 语句以验证我是否将值附加到 new_dict 中的现有键而不是重写的任何想法

最佳答案

你可以使用 collections.defaultdict :

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for key in sorted(My_dict):
... d[My_dict[key][0]].extend(My_dict[key][1:])
...
>>>
>>> dict(d)
{'Name1': ['value1', 'value2', 'value3', 'value7', 'value8', 'value9'], 'Name2': ['value4', 'value5', 'value6']}

在 Python 3.6 和更新版本中,如果您想按插入顺序处理值,可以省略 sorted() 并迭代 My_dict.values()

如果列表元素的顺序无关紧要或者您需要消除重复项,您可以使用 sets :

>>> d = defaultdict(set);
>>> for value in My_dict.values():
... d[value[0]] |= set(value[1:])
...
>>> dict(d)
{'Name1': {'value8', 'value3', 'value2', 'value1', 'value7', 'value9'}, 'Name2': {'value4', 'value5', 'value6'}}

关于python - 从列表列表创建字典。如果键存在,则将项目附加到字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44873085/

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