1

当我OrderedDict从两个列表创建时,如果我尝试使用pprint它没有按预期工作,如果我正常创建,它可以OrderedDict正常工作。

如果 OrderedDict 是用两个列表创建的,是否需要采取任何额外的步骤来在单独的行中获得每个键值的预期输出?

import pprint
from collections import OrderedDict

pprint 不起作用

l1 = [ 'a', 'b', 'x', 'd']
l2 = [ ['abc', 'def'], ['idk', 'jfk'], ['mnp'], ['oye oye']]
dic = OrderedDict(zip(l1, l2))
pprint.pprint(dic, width = 1)

OrderedDict([('a', ['abc', 'def']), ('b', ['idk', 'jfk']), ('x', ['mnp']), ('d', ['oye oye'])])

工作!

dic2 = OrderedDict()
dic2 = {'a': 'abc', 'x' : 'xyz', 'b' : 'boy'}
pprint.pprint(dic2, width = 1)

{'a': 'abc',
 'b': 'boy',
 'x': 'xyz'}
4

1 回答 1

1

在您认为可行的版本中,您打印的不是OrderedDict,而是普通的dict. 看那dic2 = {'a': 'abc', 'x' : 'xyz', 'b' : 'boy'}是一个普通的字典。

要从 a 创建一个OrderedDictdict您应该编写:

dic2 = OrderedDict({'a': 'abc', 'x' : 'xyz', 'b' : 'boy'})

结果将与zip版本相同。

似乎 Python 2.7 不支持pprintfrom OrderedDict,请参阅此处了解一些解决方法。

于 2016-05-16T20:46:29.117 回答