3 回答
TA贡献2003条经验 获得超2个赞
我会使用defaultdict:
from collections import defaultdict
list1 = ['a', 'b', 'c', 'a', 'd']
list2 = [1, 2, 3, 4, 5]
result = defaultdict(set)
for value1, value2, in zip(list1, list2):
result[value1].add(value2)
print(dict(result))
产出
{'a': {1, 4}, 'b': {2}, 'c': {3}, 'd': {5}}
TA贡献1865条经验 获得超7个赞
您可以使用字典和列表理解的组合来执行此操作:
{x: [list2[i] for i, j in enumerate(list1) if j == x] for x in list1}
输出:
{'a': [1, 4], 'b': [2], 'c': [3], 'd': [5]}
TA贡献1785条经验 获得超8个赞
选项是压缩两个列表:
L = list(zip(list1, list2))
结果:
[('a', 1), ('b', 2), ('c', 3), ('a', 4), ('d', 5)]
使用它来创建一个以集合为值的字典:
D ={}
for key in L:
if key[0] not in D:
D[key[0]] = {key[1]}
else:
D[key[0]].add(key[1])
添加回答
举报