在python中排列字典列表
我试图根据“datetime”的降序值对字典列表进行排序,即从在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
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'}]