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

时间:2016-11-14 08:00:30

标签: python list python-3.x dictionary

我有以下字典:

choco install sublimetext3

如何获取相应的密钥我是否按其中一个列表中的值进行搜索? 让我们说我想要关键' 1'如果我正在寻找价值3或关键' 2'如果我正在寻找价值10。

3 个答案:

答案 0 :(得分:5)

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

var index = a.indexOf(c)
var removeda = a.splice(index, 1)[0];
var removedb = b.splice(index, 1)[0];

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

reverse_d = {
    1: '1',
    2: '1',
    3: '1',
    4: '1',
    10: '2',
    …
}

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

reverse_d = {}

for key, values in d.items():
    for value in values:
        reverse_d[value] = key

查找现在很简单!

reverse_d = {value: key for key, values in d.items() for value in values}

如果您进行多次查找,这只会提供比搜索整个原始字典更好的性能。

答案 1 :(得分:4)

您可以使用带有过滤条件的生成器表达式,例如

>>> def get_key(d, search_value):
...     return next(key for key, values in d.items() if search_value in values)
...
>>> get_key(d, 10)
'2'
>>> get_key(d, 2)
'1'

如果没有任何键包含要搜索的值,则会返回None

>>> get_key(d, 22)
None

答案 2 :(得分:1)

这是我第一次回答问题。这个方法怎么样?

def get_key(d,search_value):
        res = []
        for v in d.items():
                if search_value in v[1]:
                        res.append(v[0])
        return res

>>> D = {'a':[2,2,3,4,5],'b':[5,6,7,8,9]}
>>> getkey.get_key(D,2)
['a']
>>> getkey.get_key(D,9)
['b']
>>> getkey.get_key(D,5)
['a', 'b']