dict = {1:'Page 1 contents', 2:'Page 2 contents', 3:'Page 3 contents'}for pagenum, pagecontents in dict.items():此代码是否保证页面将按顺序 1、2 和 3 处理?如果不是,那么有什么方法可以保证这一点?
2 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
一般的答案是:没有这样的保证。在 Python3.6 之前,不保证 dicts 有任何排序。由于 Python3.7 字典保证是插入顺序的,这不一定与您期望的相同。除非 1,2,3,... 顺序实际上是插入顺序(它在您的文字字典案例中,但通常您不处理文字字典)。
所以这里有几件事你可以做100%确定:
如果您需要保留字典,那么最快的方法就是像这样简单地循环:
pagenum = 0
while True:
pagenum += 1
try:
pagecontents = dict[idx]
except KeyError:
break
// do stuff
因为你似乎知道键总是数字。但是,差距和其他不规则行为是一个问题。因此,如果是这种情况,那么您可以在循环之前进行排序:
for pagenum, pagecontents in sorted(dict.items()):
// do stuff
尽管这要慢得多。
最后考虑从 dict 切换到实际上支持任意排序的结构,比如 list。
MMMHUHU
TA贡献1834条经验 获得超8个赞
dict = {1:'Page 1 contents', 2:'Page 2 contents', 3:'Page 3 contents'}
for pagenum, pagecontents in sorted(dict.items()):
这应该有助于您的事业。
添加回答
举报
0/150
提交
取消