Python如何通过不完整键前缀获取字典对应的value值
Python字典子字符串匹配取值方案
Python原生字典默认只支持精确键匹配,要通过short这个子字符串匹配到对应值,可参考以下实现:
方法1:列表推导式(确定仅有一个匹配项时使用)
foo = { 'longkey': 1, 'shortkey': 2, } target_str = 'short' # 匹配前缀用startswith,全字符串包含匹配用target_str in k result = [v for k, v in foo.items() if k.startswith(target_str)][0] print(result) # 输出2
注意:如果没有匹配项或者有多个匹配项,这个写法会分别抛出索引错误或者返回第一个匹配项,适合确定匹配结果唯一的场景。
方法2:next迭代器(兼容无匹配的场景)
target_str = 'short' # 第二个参数为无匹配时的默认返回值,可根据需求修改 result = next((v for k, v in foo.items() if k.startswith(target_str)), None) print(result) # 输出2
- 匹配逻辑和上面一致,没有匹配项时不会报错,直接返回你设置的默认值
- 有多个匹配项时,返回字典遍历顺序中第一个符合要求的值(Python 3.7+字典默认保留插入顺序)
内容的提问来源于stack exchange,提问作者Neykuratick
相关产品推荐
相关产品推荐

