python字典+列表问题

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

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

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

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交换一下,之后就好办了。

values = [a[key] for key in b]

可以使用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 -> [] ->