【发布时间】:2011-04-29 12:11:05
【问题描述】:
是否有任何习惯用法可以从字典中获取任意键、值对而不删除它们? (P3K)
编辑:
抱歉,措辞令人困惑。
我使用任意这个词的意思是我不在乎我得到什么。
这与随机不同,我确实关心我得到什么(即,我需要每个项目被选择的概率相同)。
而且我没有钥匙可以使用;如果我这样做了,我会认为它属于 RTFM 类别,因此不值得回答。
编辑:
不幸的是,在 P3K 中,.items() 返回一个 dict_items 对象,不像 Python 2 返回一个迭代器:
ActivePython 3.1.2.4 (ActiveState Software Inc.) based on
Python 3.1.2 (r312:79147, Sep 14 2010, 22:00:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {1:2}
>>> k,v = next(d.items())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: dict_items object is not an iterator
【问题讨论】:
-
你的意思是
.popitem()的无损版本吗? -
“任意”是什么意思?你会做不止一次吗?如果是,每次都应该不同吗?
-
我可能不止一次这样做;但我完全可以得到相同的值或不同的值。
-
在 Py2 中 dict.items() 返回一个二元组(键,值)的列表。 dict.iteritems() 返回这样的迭代器。在 Py3 中 dict.items() 返回一个 dict 视图对象,而 dict.iteritems() 不见了。
-
那么
next(iter(d.items()))会是最好的吗?
标签: python dictionary python-3.x