33

可能重复:
在 Python 中,如何按字典的值对字典列表进行排序?
根据嵌套字典值对 Python 字典进行排序

我有如下形式的字典:

a_dict = { 'e': (1, 100), 'a': (2, 3) }

我无法按元组的第二个元素对其进行排序。结果字典将如下所示:

a_dict = { 'a': (2, 3), 'e': (1, 100) }
4

2 回答 2

26

字典不能这样排序,但您可以对其内容进行排序:

sorted(a_dict.items(), key=lambda (k, (v1, v2)): v2)
sorted(a_dict.items(), key=lambda item: item[1][1])    # Python 3

您可以将结果放入collections.OrderedDict(从 2.7 开始):

OrderedDict(sorted(a_dict.items(), key=lambda (k, (v1, v2)): v2))
OrderedDict(sorted(a_dict.items(), key=lambda item: item[1][1])    # Python 3
于 2012-08-13T11:00:00.507 回答
1

在您的示例中,您使用的是字典列表。按键排序字典:

mydict = {'carl':40,
          'alan':2,
          'bob':1,
          'danny':3}

for key in sorted(mydict.iterkeys()):
    print "%s: %s" % (key, mydict[key])

alan: 2
bob: 1
carl: 40
danny: 3

如果要按值对字典进行排序,请参阅如何按值对字典进行排序?

于 2012-08-13T10:55:24.900 回答