当我从两个列表中创建OrderedDict
并且如果我尝试使用pprint
时它没有按预期工作,那么如果我正常创建OrderedDict
,它就可以正常工作。
如果使用两个列表创建OrderedDict,需要采取任何额外的步骤来获得每个键值的预期输出?
import pprint
from collections import OrderedDict
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'}
答案 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。