【问题标题】:Python Dictionary Methods behaving diff for 2.7.6 and 3.3 versionPython 字典方法在 2.7.6 和 3.3 版本中表现不同
【发布时间】:2013-11-18 12:30:13
【问题描述】:

我正在使用 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 关键字,因此我无法使用键或值或项的列表将其存储在 3.3 中的某个变量中,这与2.7

谁能帮忙解决一下为什么会这样?

谢谢

【问题讨论】:

  • 一个叫2.x另一个叫3.x不是没有道理的:)

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


【解决方案1】:

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

如果你必须有一个列表,只需使用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']

【讨论】:

  • 这有帮助!!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-10-30
  • 2022-11-28
  • 1970-01-01
  • 2017-10-06
  • 2016-08-21
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多