排序长词典列表

Inc*_*ang 0 python sorting

我有一个Python中的两个词典列表

list = [{'id' : 'ewsfsdf', 
           '_source' : 
                      {'timestamp':'2018-08-08T20:56:01', 
                       'bytes':'43534534'}},
         {'id' : 'ewsfsdz', 
           '_source' : 
                      {'timestamp':'2018-08-08T20:57:01', 
                       'bytes':'4354343534'}}]
Run Code Online (Sandbox Code Playgroud)

我想按第二深度字典中的时间戳排序列表元素.我查找了许多其他python示例,但无法通过列表中字典元素的字典元素找到合适的解决方案来排序列表元素.

你能给我一个线索吗?

Rak*_*esh 5

import datetime
l = [{'id' : 'ewsfsdf', 
           '_source' : 
                      {'timestamp':'2018-08-08T20:56:01', 
                       'bytes':'43534534'}},
         {'id' : 'ewsfsdz', 
           '_source' : 
                      {'timestamp':'2018-08-08T20:57:01', 
                       'bytes':'4354343534'}}]

print( sorted(l, key=lambda k: datetime.datetime.strptime(k['_source']["timestamp"], "%Y-%m-%dT%H:%M:%S")) )
Run Code Online (Sandbox Code Playgroud)

要么

print(sorted(l, key=lambda k: k['_source']['timestamp']))
Run Code Online (Sandbox Code Playgroud)

输出:

[{'id': 'ewsfsdf', '_source': {'timestamp': '2018-08-08T20:56:01', 'bytes': '43534534'}}, {'id': 'ewsfsdz', '_source': {'timestamp': '2018-08-08T20:57:01', 'bytes': '4354343534'}}]
Run Code Online (Sandbox Code Playgroud)
  • 您可以使用lambdakey
  • 使用datetime.datetime.strptime(k['_source']["timestamp"], "%Y-%m-%dT%H:%M:%S")字符串转换成datetime对象