Python按列表中的dict值对列表进行排序

时间:2015-11-07 01:04:30

标签: python list sorting dictionary

我有一个List并且在列表中我得到了一个字典,我想按照dict的值对列表进行排序。

这是如何工作的?

[{'id': 0, 'thread': 'First', 
 'post': [
           {'id': 0, 'title': 'MyPost', 'time': '2015-11-07 01:06:08.939687'}]
}, 
 {'id': 1, 'thread': 'Second', 
 'post': [
           {'id': 0, 'title': 'MyPost', 'time': '2015-11-07 01:06:42.933263'}]}, 
 {'id': 2, 'name': 'NoPosts', 'post': []}]

我想按照第一篇文章的时间排序我的Threadlist,这可能吗?

1 个答案:

答案 0 :(得分:3)

您可以传递排序或排序关键功能:

In [11]: def key(x):
             try:
                 return x["post"][0]["time"]   # return ISO date string
             except IndexError:
                 return "Not a date string"    # any letter > all date strings

In [12]: sorted(d, key=key)
Out[12]:
[{'id': 0,
  'post': [{'id': 0, 'time': '2015-11-07 01:06:08.939687', 'title': 'MyPost'}],
  'thread': 'First'},
 {'id': 1,
  'post': [{'id': 0, 'time': '2015-11-07 01:06:42.933263', 'title': 'MyPost'}],
  'thread': 'Second'},
 {'id': 2, 'name': 'NoPosts', 'post': []}]