cor*_*ror 12 python dictionary substring key
我有一个dict字符串型键,其确切的值我不知道(因为它们是在其他地方动态生成的).但是,我知道我想要的密钥包含一个特定的子字符串,并且具有此子字符串的单个密钥肯定在dict中.
检索此密钥的值的最佳或"最pythonic"方法是什么?
我想到了两个策略,但两个都让我感到烦恼:
for k,v in some_dict.items():
if 'substring' in k:
value = v
break
Run Code Online (Sandbox Code Playgroud)
- 要么 -
value = [v for (k,v) in some_dict.items() if 'substring' in k][0]
Run Code Online (Sandbox Code Playgroud)
第一种方法是笨重而且有点难看,而第二种方法更干净,但是索引到列表理解中的额外步骤[0]让我感到烦恼.是否有更好的方式来表达第二个版本,或者更简洁的方式来编写第一个版本?
blu*_*ubb 10
可以选择使用第一个版本的性能属性编写第二个版本.
使用生成器表达式而不是列表推导:
value = next(v for (k,v) in some_dict.iteritems() if 'substring' in k)
Run Code Online (Sandbox Code Playgroud)
括号内的表达式将返回一个迭代器,然后您将要求它提供下一个,即第一个元素.没有处理其他元素.