Python: 排序
你好,我正在做一个循环,以便获取数据字典,但因为它是一个字典,所以它会按字母顺序排序,而不是我在循环中添加的顺序……
有没有办法关闭字母排序呢?
这是我怎么做的
data = {}
for item in container:
data[item] = {}
...
for key, val in item_container.iteritems():
...
data[item][key] = val
这给了我类似这样的结果
data = {
A : { K1 : V1, K2 : V2, K3 : V3 },
B : { K1 : V1, K2 : V2, K3 : V3 },
C : { K1 : V1, K2 : V2, K3 : V3 }
}
而我希望它能保持我在循环中的顺序,比如说:
data = {
B : {K2 : V2, K3 : V3, K1 : V1},
A : {K1 : V1, K2 : V2, K3 : V3},
C : {K3 : V3, K1 : V1, K2 : V2}
}
3 个回答
0
你可以用一个列表里面再放一个列表,来代替字典里面再放字典。每个元素可以是一个包含“键”和“值”的元组。这样做的好处是可以保持顺序,不过你就不能通过键来获取元素了。我不太确定这样做是否合适,因为我不知道你具体想要实现什么,但这也是一个选择。
3
你不应该依赖字典中数据的排序。因为字典只是一个键值对的集合,里面的顺序并不是固定的,未来的版本可能会改变这个顺序。
5
如果你真的需要用字典而不是列表,可以看看新的 OrderedDict(在Python 3.1中推出,之后也会在Python 2.7中提供)。这个字典会保留你添加项目的顺序。
from collections import OrderedDict
data = OrderedDict()
for item in container:
data[item] = OrderedDict()
...
for key, val in item_container.iteritems():
...
data[item][key] = val