我有一个对象词典:
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的新手: - )
答案 0 :(得分:3)
忽略samb8s提升的可能性,单个值存在多个键,您可以像这样轻松地反转字典:
reverse_dic = dict((v, k) for k, v in dic.items())
答案 1 :(得分:1)
您可以使用列表理解。此代码为您提供列表中的键:
>>> a
{1: 2, 3: 4, 9: 4, 5: 6, 7: 8}
>>> [key for key, value in a.items() if value == 4]
[3, 9]
答案 2 :(得分:0)
这将返回一组具有该值的 ALL 键 - 就像按值过滤一样:
def find_keys(dic, val):
return set(k for k,v in dic.items() if v == val)
答案 3 :(得分:0)
常规字典[key] - >值
my_regular_dict = {1: 2, 3: 4, 5: 6}
反向查找,dict [value] - >键
my_reverse_lookup = dict([(val, key) for key, val in my_regular_dict.items()])