Python 3.12中获取首元素为指定值的字典键的Pythonic方法
更Pythonic的字典键筛选实现
你可以用列表推导式来简化代码,这是Python中处理这类筛选场景的惯用写法,比显式循环更简洁紧凑,可读性也更强:
def matching_keys(d: dict[tuple[int, int], int], n: int) -> list[tuple[int, int]]: """ 找出字典*d*中所有首元素为整数*n*的键 :param d: 目标字典 :type d: dict[tuple[int, int], int] :param n: 待匹配的键首元素值 :type n: int :return: 所有首元素为*n*的键组成的列表 """ return [key for key in d if key[0] == n]
写法说明
- 直接遍历字典本身(
for key in d)就能拿到所有键,无需显式调用d.keys(),Python中遍历字典默认就是遍历键 - 列表推导式把循环、判断、收集结果的逻辑整合在一行,契合Python“简洁直观”的风格
- 完整保留了原有的类型注解,符合Python 3.12的类型规范
如果你的字典需要频繁按首元素查询,还可以预先把键按首元素分组存储,适合多次查询的场景:
from collections import defaultdict # 预先按首元素分组 grouped_keys = defaultdict(list) for key in d: grouped_keys[key[0]].append(key) # 后续查询直接获取,不存在则返回空列表 result = grouped_keys.get(n, [])
内容的提问来源于stack exchange,提问作者PaulTanenbaum
相关产品推荐
相关产品推荐

