Python字典方法表现为2.7.6和3.3版本的diff

时间:2013-11-18 12:30:13

标签: python python-2.7 python-3.x dictionary

我使用python词典内置方法,发现它们在2.7和3.3版本的Python上提供输出方面有点不同。

以下是一个例子:

让我的词典如下:

d = {'A': [1, 2, 3], 'B': "Hello", 'C': ["this is good"]}

>>> d
{'B': 'Hello', 'C': ['this is good'], 'A': [1, 2, 3]}

现在,当我在3.3中使用keys()items()values()方法时,它会给我以下输出:

>>> print(d.keys())
dict_keys(['B', 'C', 'A'])

>>> print(d.values())
dict_values(['Hello', ['this is good'], [1, 2, 3]])

>>> print(d.items())
dict_items([('B', 'Hello'), ('C', ['this is good']), ('A', [1, 2, 3])])

理想情况下,它应该给我一个下面2.7版本给出的键或值或项目的列表:

>>> print(d.keys())
['A', 'C', 'B']

>>> print(d.values())
[[1, 2, 3], ['this is good'], 'Hello']

>>> print(d.items())
[('A', [1, 2, 3]), ('C', ['this is good']), ('B', 'Hello')]

我在3.3上的dict.keys()dict.values的帮助中看到它现在表示它返回一组键。不像2.7

上的键列表

我的问题是,由于它还在输出中附加了dict_keysdict_valuesdict_items个关键字,因此我无法使用键列表或值或项目来存储它与2.7中的一些变量不同于2.7

任何人都可以帮忙解决这个问题的原因吗?

由于

1 个答案:

答案 0 :(得分:5)

Python 3转而使用更高效的数据结构和方法;您可以使用dictionary view objectsdict.viewkeys()dict.viewvalues()在Python 2中获得相同的dict.viewitems()

如果您必须有一个列表,只需使用list()将视图中的所有值收集到一个列表中:

>>> d={'A': [1,2,3], 'B': "Hello", 'C': ["this is good"]}
>>> d.keys()
dict_keys(['C', 'B', 'A'])
>>> list(d.keys())
['C', 'B', 'A']
>>> list(d.values())
[['this is good'], 'Hello', [1, 2, 3]]
>>> list(d.items())
[('C', ['this is good']), ('B', 'Hello'), ('A', [1, 2, 3])]

对于密钥,您也可以在字典上调用list()直接

>>> list(d)
['C', 'B', 'A']