如何在变量中提取字典单个键值对
我在词典中只有一个键/值对。我想将键分配给一个变量,并将其值分配给另一个变量。我已经尝试过以下方式,但是我却遇到了同样的错误。
>>> d = {"a": 1}
>>> d.items()
[('a', 1)]
>>> (k, v) = d.items()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
>>> (k, v) = list(d.items())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
我知道我们可以一键提取键和值,也可以通过for循环和键来提取键和值iteritems()
,但是难道没有一种简单的方法可以在一个语句中分配键和值吗?
-
用元组添加另一个级别(只是逗号):
(k, v), = d.items()
或列出:
[(k, v)] = d.items()
或挑选第一个元素:
k, v = d.items()[0]
前两个具有一个额外的优点,即如果您的字典具有多个键,它们将引发异常,并且都可以在Python 3上运行,而后者则必须拼写为
k, v = next(iter(d.items()))
可以正常工作。演示:
>>> d = {'foo': 'bar'} >>> (k, v), = d.items() >>> k, v ('foo', 'bar') >>> [(k, v)] = d.items() >>> k, v ('foo', 'bar') >>> k, v = d.items()[0] >>> k, v ('foo', 'bar') >>> k, v = next(iter(d.items())) # Python 2 & 3 compatible >>> k, v ('foo', 'bar')