0

我有一本像

>>> x = {'a':2, 'c': 1, 'b':3}

字典中没有可用的方法来按值对字典进行排序。我使用

>>> sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))
>>> sorted_x
[('c', 1), ('a', 2), ('b', 3)]

sorted_x但是现在当我使用循环再次转换为字典时。喜欢

>>> new_dict = {}
>>> for i in sorted_x:
    new_dict[i[0]] = i[1]
>>> new_dict
{'a': 2, 'c': 1, 'b': 3}

再次未new_dict排序。为什么python字典不能按键排序?任何人都可以阐明它。

4

2 回答 2

3

字典未排序。它们只是键和值之间的映射。

如果要排序字典,请使用collections.OrderedDict

>>> import collections
>>> d = collections.OrderedDict(sorted_x)
>>> d
    OrderedDict([('c', 1), ('a', 2), ('b', 3)])
>>> d['c']
    1
于 2013-02-10T10:05:44.360 回答
2

python中的字典是哈希映射。键被散列以保持对元素的快速访问。

这意味着在内部必须根据它们生成的哈希对元素进行排序,而不是根据您要给出的顺序。

于 2013-02-10T10:07:32.330 回答