字典中获取值对应键的最有效方法

2 投票
4 回答
1220 浏览
提问于 2025-04-16 21:50

我有一个包含对象的字典:

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())

撰写回答