You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据整数获取值为列表的Python字典对应的键?

问题

现有如下Python字典:

my_dict = {'C': [1,2,3,4,5,6,7,8,9,10,11,12,15,18,46,64,67,73,78,83],
            'B': [13,14,22,32,38,39,42,59,68,74,79,84],
            'A': [16,17,19,23,31,37,40,50,51,60,70,75,80,85],
            'S': [20,25,33,36,43,44,48,49,57,61,62,63,71,76,81,86,88,89,92,94],
            'SS': [21,24,26,47,52,53,54,56,66,69,72,77,82,87,91,93],
            'SS+': [27,28,29,30,34,35,41,45,55,58,65,90,95,96,97,98],
            'SSS': [99,100]}

需求是输入整数(比如78)时,返回对应的键(比如'C')。尝试用以下代码实现:

my_dict_key = list(my_dict.keys())[list(my_dict.values()).index(my_dict_key)]

但报错:ValueError: 78 is not in list,请问该如何实现?

解决方案

报错原因很明确:list(my_dict.values())得到的是列表的列表,你用index(78)是在找整个列表元素等于78,显然不存在,所以触发错误。下面提供两种可行的实现方式:

方法1:直接遍历查找

适合偶尔查询的场景,逻辑直观:

def get_level(num):
    for level, nums in my_dict.items():
        if num in nums:
            return level
    return None  # 未找到时返回None

# 测试示例
print(get_level(78))  # 输出 'C'
print(get_level(99))  # 输出 'SSS'

方法2:预构建反向字典(高效多次查询)

如果需要频繁查询,建议预先构建一个反向映射字典,将每个整数直接对应到其等级,后续查询效率为O(1):

# 构建反向字典
level_map = {}
for level, nums in my_dict.items():
    for num in nums:
        level_map[num] = level

# 测试示例
print(level_map.get(78))  # 输出 'C'
print(level_map.get(100)) # 输出 'SSS'

内容的提问来源于stack exchange,提问作者Silense

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:45:35