如何获取字典键和值

新手上路,请多包涵

想象一下我有一个 dict 像这样:

 d = {'key': 'value'}

dict 只包含一个键值。 I am trying to get key from this dict , I tried d.keys()[0] but it returns IndexError , I tried this:

 list(d.keys())[0]

它工作得很好,但我认为这不是一个好方法,因为它创建了一个新列表,然后首先获取它的索引。

有一个更好的方法吗?我也想得到 value

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

阅读 638
2 个回答

如果您知道(或期望)只有一对键/值,那么您可以使用解包来获取键和值。例如。

 [item] = d.items()
assert item == ('key', 'value')

您可以更进一步,也可以解压键/值对。

 [[k, v]] = d.items()
assert k == 'key'
assert v == 'value'

当然,如果字典有多个键/值对,这会引发错误。但这很有用。字典在 python 3.7 之前是无序的( dict 在 CPython 3.6 中是有序的,但它是一个实现细节),所以做 list(d.items())[0] 会给出不一致的结果。即使在 3.7+ 中,排序也超过了插入,而不是键的任何自然排序,因此您仍然可以获得令人惊讶的结果。

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

你可以用愚蠢的方式做到这一点:

 def silly(d:dict):
    for k,v in d.items():
        return (k,v) # will only ever return the "first" one
                     # with 3.7 thats the first inserted one

使用

list(d.items())[0]

至少一次给你 和 _值_(并抛出空字典)。

从 3.7 开始,字典被“插入排序”,可能会发展一些方法来 “获取第一个”“获取最后一个” ,但到目前为止 dict 是无序的并索引到它们(或获取第一个/最后一个)没有意义。

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

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