如何从python dict中检索密钥只是部分已知?

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)

括号内的表达式将返回一个迭代器,然后您将要求它提供下一个,即第一个元素.没有处理其他元素.