字典中获取值对应键的最有效方法
我有一个包含对象的字典:
dic = {'k1':obj1, 'k2':obj2, 'k3':obj3, ...}
class MyObject:
def __init__(self,x,y):
self.x=x
self.y=y
我想知道怎么才能找到和某个值对应的键,最好能有个简单的方法来实现。这就像:
def find_key(dic, val):
for k,v in dic.items():
if v==val:
return k
return None
注:如果这很明显,我很抱歉,我还是个Python新手 :-)
4 个回答
0
普通的字典用法是通过键(key)来获取值(value),像这样:dict[key] -> value
my_regular_dict = {1: 2, 3: 4, 5: 6}
而反向查找则是通过值来找到键,像这样:dict[value] -> key
my_reverse_lookup = dict([(val, key) for key, val in my_regular_dict.items()])
1
你可以使用列表推导式。这个代码会把键放到一个列表里:
>>> a
{1: 2, 3: 4, 9: 4, 5: 6, 7: 8}
>>> [key for key, value in a.items() if value == 4]
[3, 9]
6
不考虑samb8s提到的可能性,即一个值对应多个键的情况,你可以很简单地这样反转字典:
reverse_dic = dict((v, k) for k, v in dic.items())