【问题标题】:How to fetch the key/value pair of a dictionary only containing one item?如何获取仅包含一项的字典的键/值对?
【发布时间】:2013-03-12 16:17:02
【问题描述】:

假设我有 dict。我不知道里面的键/值。如何在不执行 for 循环的情况下获取此键和值(字典中只有一项)。

您可能想知道为什么我在这种情况下使用字典。我的 API 中到处都有字典,我不希望用户迷路。这只是一致性的问题。否则,我会使用列表和索引。

【问题讨论】:

  • 愚蠢的一致性...

标签: python python-3.x


【解决方案1】:

为作业使用正确的数据类型。您的目标应该是拥有可行的代码,而不是在所有地方都使用相同的数据类型。

如果您的字典仅包含 one 键和 one 值,则可以通过索引获得:

key = list(d)[0]
value = list(d.values())[0]

或两者兼得:

key, value = list(d.items())[0]

list 调用是必需的,因为在 Python 3 中,.keys().values().items() 返回 dict 视图,而不是列表。

另一种选择是使用序列解包:

key, = d
value, = d.values()

或两者同时使用:

(key, value), = d.items()

【讨论】:

  • 我倾向于使用(value,) = d.values()解压迭代器
  • 每次我都克制自己不要将其格式化为a ,= b,或“秘密解包分配运算符”:-)
【解决方案2】:

使用迭代器获取字典中的第一项

>>> d = {"foo":"bar"}
>>> k, v = next(iter(d.items()))
>>> k
'foo'
>>> v
'bar'

【讨论】:

  • 时间戳说你是第一个。 :^)
  • +1 在集合中也可以很好地工作 - 如果dict 为空,也可以在需要时将默认值作为参数设置为next...
【解决方案3】:

你可以这样做:

>>> d={1:'one'}
>>> k=list(d)[0]
>>> v=d[k]

适用于 Python 2 或 3

【讨论】:

    【解决方案4】:

    d.popitem() 会给你一个键值元组。

    【讨论】:

    • 但这也会将其从d 中删除。
    • 这是破坏性的 - 除了获取键和值之外,它还会从字典中删除它。
    猜你喜欢
    • 2017-09-18
    • 2012-05-09
    • 2012-12-18
    • 2018-03-07
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多