我有一个 dict
,它有字符串类型的键,我不知道它们的确切值(因为它们是在别处动态生成的)。但是,我知道我想要的键包含一个特定的子字符串,并且具有这个子字符串的单个键肯定在字典中。
检索此键的值的最佳或“最 Pythonic”方法是什么?
我想到了两种策略,但都让我厌烦:
for k,v in some_dict.items():
if 'substring' in k:
value = v
break
-- 或者 --
value = [v for (k,v) in some_dict.items() if 'substring' in k][0]
第一种方法笨重且有点难看,而第二种方法更简洁,但索引列表推导式([0]
)的额外步骤让我感到厌烦。有没有更好的方式来表达第二个版本,或者更简洁的方式来写第一个?
最佳答案
可以选择使用第一个版本的性能属性编写第二个版本。
使用 generator expression而不是列表理解:
value = next(v for (k,v) in some_dict.iteritems() if 'substring' in k)
括号内的表达式将返回一个迭代器,然后您将要求它提供下一个元素,即第一个元素。没有进一步的元素被处理。
关于python - 如何从仅部分知道 key 的python dict中检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049253/