【发布时间】:2013-03-12 16:17:02
【问题描述】:
假设我有 dict。我不知道里面的键/值。如何在不执行 for 循环的情况下获取此键和值(字典中只有一项)。
您可能想知道为什么我在这种情况下使用字典。我的 API 中到处都有字典,我不希望用户迷路。这只是一致性的问题。否则,我会使用列表和索引。
【问题讨论】:
-
愚蠢的一致性...
标签: python python-3.x
假设我有 dict。我不知道里面的键/值。如何在不执行 for 循环的情况下获取此键和值(字典中只有一项)。
您可能想知道为什么我在这种情况下使用字典。我的 API 中到处都有字典,我不希望用户迷路。这只是一致性的问题。否则,我会使用列表和索引。
【问题讨论】:
标签: python python-3.x
为作业使用正确的数据类型。您的目标应该是拥有可行的代码,而不是在所有地方都使用相同的数据类型。
如果您的字典仅包含 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,或“秘密解包分配运算符”:-)
使用迭代器获取字典中的第一项
>>> d = {"foo":"bar"}
>>> k, v = next(iter(d.items()))
>>> k
'foo'
>>> v
'bar'
【讨论】:
dict 为空,也可以在需要时将默认值作为参数设置为next...
你可以这样做:
>>> d={1:'one'}
>>> k=list(d)[0]
>>> v=d[k]
适用于 Python 2 或 3
【讨论】:
d.popitem() 会给你一个键值元组。
【讨论】:
d 中删除。