如何通过单项从字典中获取单值?

新手上路,请多包涵

我看到 How to extract dictionary single key-value pair in variables 建议:

 d = {"a":1}
(k, v), = d.items()

但是:我只关心 _价值_。我想将该值传递给一个方法;喜欢:

 foo(v)

所以问题是:是否有一个适用于 python2 和 python3 的简单命令直接为我提供该值,而无需绕过“元组”赋值?

或者有没有办法让元组分配适用于我调用方法的用例?

原文由 GhostCat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 470
2 个回答

list(d.values())[0] 将被评估为 1。正如评论中所指出的,转换为 list 仅在 python3 中需要。

next(iter(d.values())) 是另一种可能性(可能内存效率更高,因为您不需要创建列表)

这两种解决方案都在本地使用 python 3.6.0 进行测试,在 TIO 中使用 python 2 进行测试。

原文由 B. Barbieri 发布,翻译遵循 CC BY-SA 3.0 许可协议

next(iter(d.values())) 是从字典中提取唯一值的自然方法。转换为 list 只是为了提取唯一的元素是没有必要的。

它还在可用选项中表现最佳(在 Python 3.6 上测试):

 d = [{'a': i} for i in range(100000)]

%timeit [next(iter(i.values())) for i in d]  # 50.1 ms per loop
%timeit [list(i.values())[0] for i in d]     # 54.8 ms per loop
%timeit [list(i.values()).pop() for i in d]  # 81.8 ms per loop

原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题