我正在尝试根据' datetime'的降序值对此词典列表进行排序。即从1438887240
到1438887255
。我需要将结果存储到具有此排序结果的另一个字典列表中。我是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'}]
答案 0 :(得分:1)
您可以使用key
将自定义sorted
传递到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'}]
您还可以使用列表的.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"]
。
答案 1 :(得分:0)
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
以确保它是整数比较而不是字符串比较。