34 python dictionary python-2.7 iterable-unpacking
我在字典中只有一个键值对.我想将键分配给一个变量,将它的值分配给另一个变量.我尝试过以下方式,但我得到的错误相同.
>>> 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
Run Code Online (Sandbox Code Playgroud)
我知道我们可以逐个提取键和值,或者通过for循环和iteritems(),但是不是一种简单的方法,我们可以在单个语句中分配它们吗?
Mar*_*ers 68
添加另一个级别,带有元组(只是逗号):
(k, v), = d.items()
Run Code Online (Sandbox Code Playgroud)
或列表:
[(k, v)] = d.items()
Run Code Online (Sandbox Code Playgroud)
或挑出第一个元素:
k, v = d.items()[0]
Run Code Online (Sandbox Code Playgroud)
前两个具有额外的优势,如果你的字典有多个键,它们会抛出异常,并且两者都可以在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')
Run Code Online (Sandbox Code Playgroud)
items() 返回一个元组列表,所以:
(k,v) = d.items()[0]
Run Code Online (Sandbox Code Playgroud)
>>> d = {"a":1}
>>> [(k, v)] = d.items()
>>> k
'a'
>>> v
1
Run Code Online (Sandbox Code Playgroud)
或使用next, iter:
>>> k, v = next(iter(d.items()))
>>> k
'a'
>>> v
1
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49157 次 |
| 最近记录: |