所以我理解了以下效果:
dict((x.key, x.value) for x in y)
当然,问题在于,如果有多个具有相同值的 x.key
,它们会与具有特定 的最后一个
作为唯一幸存的成员。我实际上想将生成的字典的值作为一个列表:x.value
一起折叠code>x.key
{
'key1': ['value1'],
'key2': ['value2', 'value3', 'value4'],
'key3': ['value5'],
# etc.
}
这个逻辑是否可以理解?
最佳答案
您可以将元素一个一个地添加到默认包含空列表的字典中:
import collections
result_dict = collections.defaultdict(list)
for x in y:
result_dict[x.key].append(x.value)
你也可以在不使用集合模块的情况下做一些非常相似的事情:
result_dict = {}
for x in y:
result_dict.setdefault(x.key, []).append(x.value)
但这可以说有点不太清晰。
一个等效的、更易读的(不需要“解析”不太常见的 setdefault
)但更行人的基本 Python 方法是:
result_dict = {}
for x in y:
if x.key not in result_dict:
result_dict[x.key] = []
result_dict[x.key].append(x.value)
第一个解决方案显然是首选,因为它同时简洁、易读且快速。
关于python - 从键、值元组列表创建字典,同时维护重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6795361/