我有以下字典:
choco install sublimetext3
如何获取相应的密钥我是否按其中一个列表中的值进行搜索? 让我们说我想要关键' 1'如果我正在寻找价值3或关键' 2'如果我正在寻找价值10。
答案 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']