所以我对以下方面的效果有了理解:
dict((x.key, x.value) for x in y)
Run Code Online (Sandbox Code Playgroud)
当然,问题在于,如果有多个x.key具有相同值的s,则它们会与最后一个x.value具有x.key相同的唯一幸存成员折叠.我想实际将结果dict的值设为列表:
{
'key1': ['value1'],
'key2': ['value2', 'value3', 'value4'],
'key3': ['value5'],
# etc.
}
Run Code Online (Sandbox Code Playgroud)
这种逻辑是否可以理解?
Eri*_*got 23
您可以将元素逐个添加到包含空列表的字典中:
import collections
result_dict = collections.defaultdict(list)
for x in y:
result_dict[x.key].append(x.value)
Run Code Online (Sandbox Code Playgroud)
您还可以执行非常类似的操作,而无需使用集合模块:
result_dict = {}
for x in y:
result_dict.setdefault(x.key, []).append(x.value)
Run Code Online (Sandbox Code Playgroud)
但这可以说略显不易清晰.
一个等效的,更易读的(不需要"解析"不太常见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)
Run Code Online (Sandbox Code Playgroud)
第一种解决方案显然是首选解决方案,因为它同时简洁,清晰,快速.