首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在变量中提取字典单键-值对

如何在变量中提取字典单键-值对
EN

Stack Overflow用户
提问于 2013-11-22 21:18:03
回答 9查看 69.3K关注 0票数 50

我在字典中只有一个键值对。我想把key赋给一个变量,把它的值赋给另一个变量。我已经尝试了下面的方法,但我得到了同样的错误。

代码语言:javascript
复制
>>> 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()来提取,但是没有一种简单的方法可以在一条语句中同时分配这两个键和值吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-11-22 21:19:27

添加另一个级别,包含一个元组(仅为逗号):

代码语言:javascript
复制
(k, v), = d.items()

或者列出一个列表:

代码语言:javascript
复制
[(k, v)] = d.items()

或者选择第一个元素:

代码语言:javascript
复制
k, v = d.items()[0]

前两种方法还有一个额外的优点,即如果您的字典有多个键,那么它们就会抛出一个异常,而且这两种方法都可以在Python3上工作,而后者必须拼写为k, v = next(iter(d.items()))才能工作。

演示:

代码语言:javascript
复制
>>> 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')
票数 87
EN

Stack Overflow用户

发布于 2013-11-22 21:19:33

items()返回元组列表,如下所示:

代码语言:javascript
复制
(k,v) = d.items()[0]
票数 6
EN

Stack Overflow用户

发布于 2013-11-22 21:19:33

代码语言:javascript
复制
>>> d = {"a":1}
>>> [(k, v)] = d.items()
>>> k
'a'
>>> v
1

或者使用nextiter

代码语言:javascript
复制
>>> k, v = next(iter(d.items()))
>>> k
'a'
>>> v
1
>>>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20145902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档