在python中排列字典列表

在python中排列字典列表,python,dictionary,Python,Dictionary,我试图根据“datetime”的降序值对字典列表进行排序,即从143887240到143887255。我需要用这个排序结果将结果存储到另一个字典列表中。我是python新手,正在尝试一种实现此标准的方法。非常感谢您的帮助 res = [{'cpunumber': '40.0', 'servername': 'f02wn01', 'cpucore_sum': '5.0', 'cpucore_00': '0.399414', 'datetime': '1438887255'}, {'cpu

我试图根据“datetime”的降序值对字典列表进行排序,即从
143887240
143887255
。我需要用这个排序结果将结果存储到另一个字典列表中。我是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'}]

您可以使用
lambda
函数作为
key
进行排序。还可以转换为
int
以确保它是整数比较,而不是字符串比较

您可以使用
reverse=True
将自定义
传递到
排序
函数,以获得降序:

>>> 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'}]
>>> 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'}]
您还可以使用列表的
.sort
方法对其进行适当排序(使用
reverse=True
进行降序):


如果您所有的
dict
没有保证有
“datetime”
键,您可以使用
x.get(“datetime”)
而不是
x[“datetime”]

@mu無 非常感谢您的投入!帮助并学会了lot@suraj您选择的答案将不会给出正确的输出。如果您有
123
4
这样的值,它将给出
123
小于
4
的字符串比较,而不是
整数比较
>>> 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'}]