如何通过列表中的值获取列表的值?

Bin*_*ary 3 python dictionary list python-3.x

我有以下字典:

d = {'1' : [1, 2, 3, 4], '2' : [10, 20, 30, 40]}
Run Code Online (Sandbox Code Playgroud)

如何通过其中一个列表中的值获取相应的密钥?假设我正在寻找值3或键'2',如果我正在寻找值10,那么我想要键'1'.

Ry-*_*Ry- 5

您可以将字典反转为此结构以执行此类查找:

reverse_d = {
    1: '1',
    2: '1',
    3: '1',
    4: '1',
    10: '2',
    …
}
Run Code Online (Sandbox Code Playgroud)

可以通过循环每个键的每个值来构建:

reverse_d = {}

for key, values in d.items():
    for value in values:
        reverse_d[value] = key
Run Code Online (Sandbox Code Playgroud)

或更简洁地作为词典理解:

reverse_d = {value: key for key, values in d.items() for value in values}
Run Code Online (Sandbox Code Playgroud)

查找现在很简单!

k = reverse_d[30]
# k = '2'
Run Code Online (Sandbox Code Playgroud)

但是,如果您执行多次查找,这仅提供比搜索整个原始字典更好的性能.