我有一个像
这样的词典>>> 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字典不能按键排序?任何人都可以阐明它。
答案 0 :(得分:3)
字典未分类。它们只是键和值之间的映射。
如果您需要排序字典,请使用collections.OrderedDict
:
>>> import collections
>>> d = collections.OrderedDict(sorted_x)
>>> d
OrderedDict([('c', 1), ('a', 2), ('b', 3)])
>>> d['c']
1
答案 1 :(得分:2)
python中的字典是哈希映射。对密钥进行哈希处理,以便快速访问元素。
这意味着元素内部必须根据它们生成的哈希进行排序,而不是取决于您想要的顺序。