我使用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_keys
或dict_values
或dict_items
个关键字,因此我无法使用键列表或值或项目来存储它与2.7中的一些变量不同于2.7
任何人都可以帮忙解决这个问题的原因吗?
由于
答案 0 :(得分:5)
Python 3转而使用更高效的数据结构和方法;您可以使用dictionary view objects,dict.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']