当字典由两个列表组成时,将 pprint 用于 OrderedDicts

Using pprint for OrderedDicts when dict is made with two lists

当我从两个列表创建 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'}

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

要从 dict 创建 OrderedDict,您应该这样写:

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

结果将与 zip 版本相同。

似乎 Python 2.7 不支持 OrderedDict 中的 pprint,请参阅 here 了解一些解决方法。