亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何識別python中兩個列表之間的關系/映射?

如何識別python中兩個列表之間的關系/映射?

蠱毒傳說 2021-08-05 16:48:26
我創建了兩個列表。list1= [a,b,c,a,d] list2=[1,2,3,4,5]我想根據索引位置找到這兩個列表之間的關系,即在 list1a中重復 2 次索引。在0,3list2 中索引0,3 值1 ,4 的關系是一對多的關系是:{1,4}下一個b 不在列表中重復,1它的索引是,列表12的索引1值是2,關系是一對一的b:{2}我的預期輸出將是 {a:{1,4},b:{2},c:{3},d:{5}}
查看完整描述

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}}


查看完整回答
反對 回復 2021-08-05
?
鴻蒙傳說

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]}


查看完整回答
反對 回復 2021-08-05
?
慕的地10843

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])


查看完整回答
反對 回復 2021-08-05
  • 3 回答
  • 0 關注
  • 266 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號