我在python2.7中有一个代码,它获取一行文本作为其列表元素,并将其作为json返回。代码如下:
import itertools
lines=["Hamlet"
,"William Shakespeare",
"Edited Barbara B Mowat Paul Werstine"
,"Michael Poston Rebecca Niles"]
LinesMap=dict()
for line in lines:
list=[l for l in line.split(' ')]
d = dict(itertools.izip_longest(*[iter(list)] * 2, fillvalue=None))
LinesMap.update(d)
print(LinesMap)
输出为:
{'William': 'Shakespeare', 'Edited': 'Barbara', 'B': 'Mowat',
'Michael':'Poston', 'Paul': 'Werstine', 'Rebecca': 'Niles', 'Hamlet': None}
鉴于它应该是:
{'Hamlet': None, 'William': 'Shakespeare', 'Edited': 'Barbara',
'B':'Mowat', 'Paul': 'Werstine', 'Michael': 'Poston', 'Rebecca': 'Niles'}
如果我把单子再长一点,情况会更糟!为什么顺序不对?但是当我在python3.6中运行相同的代码时,当然使用python3语法,顺序是正确的。python3.6代码是:
import itertools
lines=["Hamlet"
,"William Shakespeare",
"Edited Barbara B Mowat Paul Werstine"
,"Michael Poston Rebecca Niles"]
LinesMap=dict()
for line in lines:
list=[l for l in line.split(' ')]
d = dict(itertools.zip_longest(*[iter(list)] * 2, fillvalue=None))
LinesMap = {**LinesMap, **d}
print(LinesMap)
这是一个问题。另一个是,对于短列表,它可以正常运行。但当列表较长且元素过多时,输出不会显示任何内容,并且似乎已中断。这在windows和linux中是不会中断的。有什么问题?你知道吗
ps:出于某些原因,我不得不在Python2.7中运行它!你知道吗
Python
dict
对象没有内在的顺序,除了在Python的最新版本中,所以不能假设您将以与放入对象相同的顺序取出对象。你知道吗如果需要该功能,可以使用
OrderedDict
对象。你知道吗相关问题 更多 >
编程相关推荐