如何将多个列表合并为一个列表?

时间:2019-04-22 00:47:18

标签: python-3.x sorting

我有一个列表,我们称它为combinedLists,其中包含n个元素,每个元素都是dict对象的列表。 combinedLists的每个列表中的字典数量通常不相同(但可以是),即:

len(combinedLists) = 2
type(combinedLists[0]) = list
type(combinedLists[0][0]) = dict
len(combinedLists[0]) = 250
type(combinedLists[1]) = list
type(combinedLists[1][0]) = dict
len(combinedLists[1]) = 400

每个dict对象都有一个tstamp键,该键给出日期时间对象的值。这些列表已经按时间顺序排列,因此索引0处的字典始终是最新的时间戳,而最后的字典是最早的时间戳。

我想做的是:

  • combinedLists的每个列表元素组合到一个按时间顺序排列的dict对象的列表(我们将其称为consolidatedList),其中索引0是最新的dict,即consolidatedList[0]['tstamp']是最新的,consolidatedList[-1]['tstamp']是最早的。

我一直在重写算法。如果您愿意的话,我需要一些建议。

1 个答案:

答案 0 :(得分:3)

只要您的datetime对象被Python的list.sort()函数识别,此方法就应该起作用。 datetimetime库似乎都对我有用。

from operator import itemgetter

consolidatedlist = [d for list_of_dicts in combinedlist for d in list_of_dicts]
consolidatedlist.sort(key=itemgetter('tstamp'))