因为我想将dict解码为json,但我发现输出顺序不是我想要的,那我就做这样的测试:
a = {'a':'1st','ab':'2nd'}
print(a)
a = {'b':'1st','bc':'2nd'}
print(a)
a = {'c':'1st','cd':'2nd'}
print(a)
a = {'d':'1st','de':'2nd'}
print(a)
a = {'e':'1st','ef':'2nd'}
print(a)
a = {'f':'1st','fg':'2nd'}
print(a)
out put是
{'a': '1st', 'ab': '2nd'}
{'b': '1st', 'bc': '2nd'}
{'c': '1st', 'cd': '2nd'}
{'de': '2nd', 'd': '1st'}
{'ef': '2nd', 'e': '1st'}
{'fg': '2nd', 'f': '1st'}
因为ascii中的d是100?
如何解释?我能改变它的命令吗?
答案 0 :(得分:5)
字典不是用Python排序的。如果您想要排序的词典,请使用OrderedDict
:
>>> from collections import OrderedDict
>>> a = OrderedDict((('f','1st'),('fg','2nd')))
>>> a
OrderedDict([('f', '1st'), ('fg', '2nd')])
但是,为了构建OrderedDict
,您需要使用保留其排序顺序的对象,例如list
或tuple
。
答案 1 :(得分:1)
dict
项目没有订单。无论订单是什么,都是一个实施细节 - 你不能指望它。
如果您需要订购商品,请使用collections.OrderedDict(在Python 2.7中引入)。
In [1]: import collections
In [9]: a = collections.OrderedDict([('d', '1st'), ('de', '2nd')])
In [10]: a
Out[10]: OrderedDict([('d', '1st'), ('de', '2nd')])