python - 如何从仅部分知道 key 的python dict中检索?

标签 python dictionary key substring

我有一个 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/

相关文章:

python - 替代 npz 文件?

internet-explorer - 试图对已标记为删除的注册表项进行非法操作 - 仅在 IE 中

r - 查找具有所有唯一值的 data.frame 的第一列的最优雅的方法是什么?

c# - 如何在没有值的情况下将键添加到字典中?

python - 将返回的字符串转换为字典?

python - 计算 Pandas DataFrame 的百分比变化

python - Matplotlib,避免 plot_trisurf() 中不需要的三角形

python - 数据文件夹应该如何在 cnn 模型中将输入作为 (x-train, y-train), (x-test, y-test)

python - 将json dict转换为pandas df中的行

wpf - 合并字典和本地资源