python - 通过值列表获取键
问题描述
我有一本字典和一个值列表,例如:
dictionary = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
liste = [2, 3]
我想:
result = ['b', 'c']
如果我有一本非常大的字典,那么最好的方法是什么?
键具有唯一值。
解决方案
这里的想法是为高效查找创建一个 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])
推荐阅读
- c# - 自托管 WCF net.tcp 服务应用程序无法间歇性启动
- postgresql - 在 Redshift 中将 varchar 列转换为整数
- intellij-idea - 当列中有一些注释时对齐列中的字段
- python - 使用递归以相反的顺序返回节点类的字符串表示形式
- android - 在 SQLite 中存储和查询纬度和对数不会产生预期的结果
- c++ - 预编译的头文件 C++ 不能重命名 pch.h
- excel - 仅格式化小写字母
- groovy - 如何在 Katalon 中使用脚本模式加密密码文本输入?
- ruby-on-rails - 在 before_save 之前触发 before_create
- javascript - 在发出进一步的 ajax 请求之前等待令牌