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})])
我是 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})])