如何识别python中两个列表之间的关系/映射?

我创建了两个列表。

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



蛊毒传说
浏览 232回答 3
3回答

湖上湖

我会使用defaultdict:from collections import defaultdictlist1 = ['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}}

鸿蒙传说

您可以使用字典和列表理解的组合来执行此操作:{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]}

慕的地10843

选项是压缩两个列表: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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python