字典的pop()的非破坏性版本

时间:2010-10-23 06:54:33

标签: python dictionary python-3.x

是否有任何习惯用于从字典中获取任意键,值对而不删除它们? (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

5 个答案:

答案 0 :(得分:4)

k, v = next(iter(d.items())) # updated for Python 3

答案 1 :(得分:-1)

import random
k, v = random.choice(d.items())

答案 2 :(得分:-1)

pop应该删除一个项目。这不是那种方法的意思吗?

如果要获取随机密钥,则值对使用伪随机模块

>>> import random
>>> x = {1:3, 4:5, 6:7}
>>> x = {1:3, 4:5, 6:7, 'a':9, 'z':'x'}
>>> k = random.choice(x.keys())
>>> x[k]
7
>>> 

答案 3 :(得分:-1)

items()方法返回字典的键值对的副本作为列表。例如, >fruits_color = {'apple': 'red', 'banana': 'green'}
>fruits_color.items()
[('apple', 'red'), ('banana', 'green')]

获得列表后,您可以选择键值对。

答案 4 :(得分:-1)

获得“任意”键值对?

k, v = k, d[k]