循环通过python字典总是产生不同的结果

时间:2018-03-27 05:53:02

标签: python python-3.x

我在Python 3.4中有以下代码

message = {'function':'TIME_SERIES_INTRADAY',
'symbol':'MSFT',
'interval':'15min',
'apikey':'demo'}

for key1 in message:
    print(key1)

上面的代码总是在每次运行时以不同的顺序打印密钥。有没有办法按顺序分配它?

2 个答案:

答案 0 :(得分:2)

默认情况下不对Python字典键进行排序。如果您需要它们是一致的,并按照您填写字典的顺序使用有序的字典。

编辑:OrderedDict自Python 3.1开始引入,即使在Python 3.6中仍然有效

您可以详细了解here

答案 1 :(得分:1)

要扩展我的评论,请在3.6这个字典中填写:

a = {r: r for r in range(100)}

打印为0-99

但是,如果我们这样做:

for r in range(50):
    a.pop(r)

for r in range(10):
    a[r] = r

for r in range(10):
    a[r + 100] = r + 100

我们发现令人惊讶的情况是它打印0-9,50-99,100-109所以原始的50-99保持在插入顺序中,但不知何故后来添加到开头的位置(0-9)然后在最后(100-109)。