为了账号安全,请及时绑定邮箱和手机立即绑定

如何识别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 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信