Python: 排序

2 投票
3 回答
502 浏览
提问于 2025-04-15 21:33

你好,我正在做一个循环,以便获取数据字典,但因为它是一个字典,所以它会按字母顺序排序,而不是我在循环中添加的顺序……

有没有办法关闭字母排序呢?

这是我怎么做的

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

撰写回答