python: sorting
hi im doing a loop so i could get dict of data, but since its a dict it's sorting alphabetical and not as i push it trought the loop ...
is it possible to somehow turn off alphabetical sorting?
here is how do i do that
data = {}
for item in container:
data[item] = {}
...
for key, val in item_container.iteritems():
...
data[item][key] = val
whitch give me something like this
data = {
A : { K1 : V1, K2 : V2, K3 开发者_JAVA百科: V3 },
B : { K1 : V1, K2 : V2, K3 : V3 },
C : { K1 : V1, K2 : V2, K3 : V3 }
}
and i want it to be as i was going throught the loop, e.g.
data = {
B : {K2 : V2, K3 : V3, K1 : V1},
A : {K1 : V1, K2 : V2, K3 : V3},
C : {K3 : V3, K1 : V1, K2 : V2}
}
If you really need to use a dictionary and not a list, take a look at the new OrderedDict (Python 3.1, soon to be available in Python 2.7, too). This will preserve the order in which its items were added.
from collections import OrderedDict
data = OrderedDict()
for item in container:
data[item] = OrderedDict()
...
for key, val in item_container.iteritems():
...
data[item][key] = val
You should not be relying on the sort order of data in a dict; since it is just a collection of key/value pairs, the ordering is not guaranteed by the underlying implementation and could change in a future version.
You can use a list of lists, instead of a dict of dicts. Each element would be a tuple of (key,value). Of course, this means you won't be able to retrieve elements by keys, but it will preserve order. I'm not sure if its a good idea, because I don't really know what you're trying to do, but its an option.
精彩评论