字典通过value直接获取key

 2026-04-30  阅读 2  评论 0

摘要:在 Python 中,字典默认通过键(key)快速查找值(value),但若要通过值反向查找对应的键,需要手动实现。以下是几种常见方法:
方法 1:遍历字典项(适合偶尔查询)
直接遍历字典的键值对

在 Python 中,字典默认通过键(key)快速查找值(value),但若要通过值反向查找对应的键,需要手动实现。以下是几种常见方法:

字典通过value直接获取key

方法 1:遍历字典项(适合偶尔查询)

直接遍历字典的键值对,收集所有匹配值的键:

python

def get_keys_by_value(d, target_value):

return [key for key, value in d.items if value == target_value]

示例

my_dict = {'a': 1, 'b': 2, 'c': 1}

print(get_keys_by_value(my_dict, 1)) 输出: ['a', 'c']

print(get_keys_by_value(my_dict, 3)) 输出: []

方法 2:构建反向字典(适合频繁查询)

预先构建一个值到键的映射,提高后续查询效率:

python

def build_reverse_mapping(d):

reverse_dict = {}

for key, value in d.items:

if value not in reverse_dict:

reverse_dict[value] = []

reverse_dict[value].append(key)

return reverse_dict

示例

my_dict = {'a': 1, 'b': 2, 'c': 1}

reverse_dict = build_reverse_mapping(my_dict)

print(reverse_dict.get(1, [])) 输出: ['a', 'c']

print(reverse_dict.get(3, [])) 输出: []

方法 3:获取第一个匹配的键(仅需首个结果)

若只需第一个匹配的键,使用 `next` 和生成器表达式:

python

def get_first_key_by_value(d, target_value):

return next((key for key, value in d.items if value == target_value), None)

示例

my_dict = {'a': 1, 'b': 2, 'c': 1}

print(get_first_key_by_value(my_dict, 1)) 输出: 'a'

print(get_first_key_by_value(my_dict, 3)) 输出: None

注意事项

1. 值不唯一性:一个值可能对应多个键,方法1和方法2会返回所有键。

2. 哈希限制:若字典的值不可哈希(如列表),无法构建反向字典。

3. 性能权衡:单次查询遍历即可;频繁查询建议预先构建反向字典。

根据具体需求选择合适的方法。

版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。

原文链接:https://www.6g9.cn/qwsh/ddb49AD5QUVFUD1Y.html

发表评论:

关于我们
知妳网是一个专注于知识成长与生活品质的温暖社区,致力于提供情感共鸣、实用资讯与贴心服务。在这里,妳可以找到相关的知识、专业的建议,以及提升自我的优质内容。无论是职场困惑、情感心事,还是时尚美妆、健康生活,知妳网都能精准匹配妳的需求,陪伴妳的每一步成长。因为懂妳,所以更贴心——知妳网,做妳最知心的伙伴!
联系方式
电话:
地址:广东省中山市
Email:admin@qq.com

Copyright © 2022 知妳网 Inc. 保留所有权利。 Powered by

页面耗时0.0473秒, 内存占用1.7 MB, 访问数据库19次