通过值列表获取键

Tim*_*Tim 0 python

我有一本字典和一个值列表,例如:

dictionary = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

liste = [2, 3]
Run Code Online (Sandbox Code Playgroud)

我想:

result = ['b', 'c']
Run Code Online (Sandbox Code Playgroud)

如果我有一本非常大的字典,那么最好的方法是什么?

键具有唯一值。

Sau*_*wan 5

这里的想法是为高效查找创建一个 reverse_dict ,否则复杂度可以是 O(mn),m 键数,n 列表长度。值可以是重复的,因此保留键的列表也很重要。

result = []
reverse_dict = collections.defaultdict(list)
for key, value in dictionary.items():
    reverse_dict[value].append(key) 
for v in liste:
    result.extend(reverse_dict[v])
Run Code Online (Sandbox Code Playgroud)