我有一个字典列表:
[{'apr': 567.82,
'aug': 567.82,
'dec': 0.0,
'feb': 0.0,
'jan': 0.0,
'jul': 567.82,
'jun': 567.82,
'mar': 0.0,
'may': 567.82,
'nov': 0.0,
'oct': 567.82,
'sep': 567.82,
'tenantname': 7,
'unitname': 4},
{'apr': 0.0,
'aug': 0.0,
'dec': 567.82,
'feb': 0.0,
'jan': 0.0,
'jul': 0.0,
'jun': 0.0,
'mar': 0.0,
'may': 0.0,
'nov': 567.82,
'oct': 0.0,
'sep': 0.0,
'tenantname': 2,
'unitname': 4},
{'apr': 0.0,
'aug': 0.0,
'dec': 0.0,
'feb': 567.82,
'jan': 567.85,
'jul': 0.0,
'jun': 0.0,
'mar': 567.82,
'may': 0.0,
'nov': 0.0,
'oct': 0.0,
'sep': 0.0,
'tenantname': 1,
'unitname': 4}]
我想根据dict的值对列表进行排序,例如
答案 0 :(得分:3)
将您的字典视为
urdict=[{'mar': 0.0, 'sep': 567.82000000000005, 'may': 567.82000000000005, 'jun': 567.82000000000005, 'jul': 567.82000000000005, 'nov': 0.0, 'feb': 0.0, 'aug': 567.82000000000005,'jan': 0.0, 'apr': 567.82000000000005, 'dec': 0.0, 'oct': 567.82000000000005}, {'mar': 0.0, 'sep': 0.0, 'may': 0.0, 'jun': 0.0, 'jul': 0.0, 'nov': 567.82000000000005, 'feb': 0.0, 'aug': 0.0, 'jan': 0.0, 'apr': 0.0, 'dec': 567.82000000000005, 'oct': 0.0}, {'mar': 567.82000000000005, 'sep': 0.0, 'may': 0.0, 'jun': 0.0, 'jul': 0.0, 'nov': 0.0, 'feb': 567.82000000000005, 'aug': 0.0, 'jan': 567.82000000000005, 'apr': 0.0, 'dec': 0.0, 'oct': 0.0}]
创建月份词典
month={'jan':0,'feb':1,'mar':2,'apr':3,'may':4,'jun':5,'jul':6,'aug':7,'sep':8,'oct':9,'nov':10,'dec':11}
创建一个空的词典列表来存储您的最终结果
ursorteddicts=[]
然后在对字典进行排序时使用`月字典作为交叉引用。最终结果应存储在OrderedDict中以保留订单。注意在排序之前,您需要将字典转换为(键,值)元组列表
for d in urdict:
ursorteddicts.append(collections.OrderedDict(sorted(((k,v) for k,v in d.iteritems()),key=lambda x:month[x[0]])))