获取字典值的最有效方法

时间:2011-07-19 13:50:30

标签: python

我有一个对象词典:

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 :(得分: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()])