在python中排序一个字典列表

2024-09-28 20:56:45 发布

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

我试图根据'datetime'的降序值对字典列表进行排序,即从14388872401438887255。我需要用这个排序结果将结果存储到另一个字典列表中。我是python新手,正在尝试一种实现这个标准的方法。非常感谢您的帮助。你知道吗

res = [{'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.0',   'cpucore_00': '0.399414', 'datetime': '1438887255'}, 
  {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '9.375', 'cpucore_00': '1.597656', 'datetime': '1438887250'}, 
  {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '3.195312', 'cpucore_00': '0.0', 'datetime': '1438887240'}, 
  {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.59375', 'cpucore_00': '1.0', 'datetime': '1438887245'}]

Tags: 方法列表标准datetime字典排序ressum
2条回答
x = [{'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.0',        'cpucore_00': '0.399414', 'datetime': '1438887255'},
   {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '9.375',      'cpucore_00': '1.597656', 'datetime': '1438887250'},
   {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum':     '3.195312', 'cpucore_00': '0.0', 'datetime': '1438887240'},
  {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.59375', 'cpucore_00': '1.0', 'datetime': '1438887245'}]

y=sorted(x,key=lambda z:int(z.get("datetime")))

您可以使用lambda函数作为key来完成分类。还有转换为int以确保它是整数比较而不是字符串比较。你知道吗

您可以使用reverse=True将自定义key传递给sorted函数以获得降序:

>>> res = [{'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.0',   'cpucore_00': '0.399414', 'datetime': '1438887255'}, 
...   {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '9.375', 'cpucore_00': '1.597656', 'datetime': '1438887250'}, 
...   {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '3.195312', 'cpucore_00': '0.0', 'datetime': '1438887240'}, 
...   {'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.59375', 'cpucore_00': '1.0', 'datetime': '1438887245'}]
>>> sorted(res, key=lambda x: x["datetime"], reverse=True)
[{'cpucore_00': '0.399414',
  'cpucore_sum': '5.0',
  'cpunumber': '40.0',
  'datetime': '1438887255',
  'servername': 'f02wn01'},
 {'cpucore_00': '1.597656',
  'cpucore_sum': '9.375',
  'cpunumber': '40.0',
  'datetime': '1438887250',
  'servername': 'f02wn01'},
 {'cpucore_00': '1.0',
  'cpucore_sum': '5.59375',
  'cpunumber': '40.0',
  'datetime': '1438887245',
  'servername': 'f02wn01'},
 {'cpucore_00': '0.0',
  'cpucore_sum': '3.195312',
  'cpunumber': '40.0',
  'datetime': '1438887240',
  'servername': 'f02wn01'}]

您还可以使用列表的.sort方法对其进行就地排序(使用reverse=True表示降序):

>>> res.sort(key=lambda x: x["datetime"])
>>> res
[{'cpucore_sum': '3.195312', 'cpucore_00': '0.0', 'servername': 'f02wn01', 'cpunumber': '40.0', 'datetime': '1438887240'}, {'cpucore_sum': '5.59375', 'cpucore_00': '1.0', 'servername': 'f02wn01', 'cpunumber': '40.0', 'datetime': '1438887245'}, {'cpucore_sum': '9.375', 'cpucore_00': '1.597656', 'servername': 'f02wn01', 'cpunumber': '40.0', 'datetime': '1438887250'}, {'cpucore_sum': '5.0', 'cpucore_00': '0.399414', 'servername': 'f02wn01', 'cpunumber': '40.0', 'datetime': '1438887255'}]

如果您的所有dict都不能保证有"datetime"键,您可以使用x.get("datetime")而不是x["datetime"]。你知道吗

相关问题 更多 >