python 中的多维排序

multi dimensional sorting in python

我是 python 的新手,需要帮助按字段对下面的多维字典进行排序 - "rank"

from operator import *
from collections import OrderedDict
print 'Dictionaries:'
l = {"test":{"rank":61,"test":2},"test1":{"rank":12,"test":2},"test2":{"rank":23,"test":2}}

我尝试过以下方法,

d_sorted_by_value = OrderedDict(sorted(l.items(), key=attrgetter('rank')))

但出现错误:

AttributeError: 'tuple' object has no attribute 'rank'

您想将 lambda 应用于 dict 项,它是一个元组 key/value。 value是你要取的dict"rank",所以sort key可以写成:

lambda d:d[1]["rank"]

d[1] 给你存储为当时值的字典,['rank'] 访问值字典数据)。混淆来自输入数据中不同程度的字典。

测试:

from collections import OrderedDict

l = {"test":{"rank":61,"test":2},"test1":{"rank":12,"test":2},"test2":{"rank":23,"test":2}}

d_sorted_by_value = OrderedDict(sorted(l.items(), key=lambda d:d[1]["rank"]))

print(d_sorted_by_value)

returns:

OrderedDict([('test1', {'rank': 12, 'test': 2}), ('test2', {'rank': 23, 'test':2}), ('test', {'rank': 61, 'test': 2})])