qq_41787486
2021-07-11 22:03
采纳率: 66.7%
浏览 35

python字典+列表问题

a={'id1'=1001,'id2'=1002,'id3'=1003,……,'id99'=1099}
b=[1003,1006,1009,1005]

我如何通过列表b去找到对应字典a中value的key呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 已采纳

    你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

    a={'id1':1001,'id2':1002,'id3':1003,'id4':1004,'id5':1005,'id6':1006,'id7':1007,'id8':1008,'id9':1009,'id10':1010}
    b=[1003,1006,1009,1005]
    a2 = dict(zip(a.values(),a.keys()))
    c = [a2[x] for x in b]
    print(c)
    
    

    img

    就是先通过dict(zip(a.values(),a.keys()))把字典a中value和key交换一下,之后就好办了。

    已采纳该答案
    2 打赏 评论
  • values = [a[key] for key in b]

    1 打赏 评论
  • Soda Wang 2021-07-11 22:30

    可以使用filter进行查找,这种方法也适用于多个值,以及没有值的情况!

    a = dict()
    for i in range(100):
        a[f'id{i}'] = 1000+i
    
    a['id1066'] = 1006
    a['id5'] = 1004
    # print(a)
    b = [x+1000 for x in [3, 6, 9, 5]]
    # print(b)
    
    # print(list(filter(lambda v: v[1] == b[0], a.items())))
    
    for vb in b:
        l = list(filter(lambda v: v[1] == vb, a.items()))
        print(f"{vb} -> ", end='')
        print(l, end=" -> ")
        for i in l:
            print(i[0], end=' ')
        print()
    

    运行结果:

    1003 -> [('id3', 1003)] -> id3 
    1006 -> [('id6', 1006), ('id1066', 1006)] -> id6 id1066 
    1009 -> [('id9', 1009)] -> id9
    1005 -> [] ->
    
    打赏 评论

相关推荐 更多相似问题