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])
添加回答
舉報