根据字典的值对列表进行排序

2024-09-30 09:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表,比如:

[{'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的值对列表进行排序,这样

  • 以月份'jan'、'feb'、'mar'的dict值为准
  • 月份值为'apr'、'may'、。。。。第二名
  • “11月”和“12月”值的dict将最后出现

Tags: dictoctnovaprjunmarsepmay
1条回答
网友
1楼 · 发布于 2024-09-30 09:25:54

把你的字典当作

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}

创建一个空字典列表来存储最终结果

^{pr2}$

然后在对词典进行排序时,用月份词典作为对照。最终结果应存储在OrderedDict中以保持顺序。注意在排序之前,您需要将字典转换为(key,value)元组列表

for d in urdict:
    ursorteddicts.append(collections.OrderedDict(sorted(((k,v) for k,v in d.iteritems()),key=lambda x:month[x[0]])))

相关问题 更多 >

    热门问题