字典的非破坏性pop()版本
有没有什么简单的方法可以从字典里获取一个任意的键值对,而不把它们删掉? (P3K)
编辑:
抱歉,我的表述可能让人困惑。
我用“任意”这个词是指我对获取的内容没有特别的要求。
这和“随机”是不同的,随机是指我对获取的内容有要求(也就是说,我希望每个选项被选中的概率是一样的)。
而且我没有可以用的键;如果我有的话,我觉得这就属于“查手册”那种情况,不需要在StackOverflow上问。
编辑:
不幸的是,在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 个回答
-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
>>>
-1
items()
这个方法会把字典里的键和值以列表的形式返回。举个例子,
>fruits_color = {'apple': 'red', 'banana': 'green'}
>fruits_color.items()
[('apple', 'red'), ('banana', 'green')]
当你得到了这个列表后,就可以选择里面的键值对了。
8
k, v = next(iter(d.items())) # updated for Python 3
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言进行解释。