当dict由两个列表组成时,使用pprint for OrderedDicts

时间:2016-05-16 19:43:40

标签: python dictionary ordereddictionary pprint

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

1 个答案:

答案 0 :(得分:1)

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

要从OrderedDict创建dict,您应该写一下:

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

结果与zip版本相同。

似乎Python 2.7不支持pprint中的OrderedDict,有关某些变通方法,请参阅here