Как объединить несколько списков в один список? - PullRequest
1 голос
/ 22 апреля 2019

У меня есть список, назовем его 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, который дает значение объекта datetime. Списки уже расположены в хронологическом порядке, так что указание с индексом 0 всегда является самой последней отметкой времени, а последнее указание является самым ранним.

Что я хочу сделать, это:

  • объединяет каждый элемент списка combinedLists в один список (назовем его consolidatedList) объектов dict в хронологическом порядке, где индекс 0 является самым последним диктом, т. Е. Так что consolidatedList[0]['tstamp'] является наиболее недавний и consolidatedList[-1]['tstamp'] будет самым ранним.

Я продолжаю переписывать алгоритм. Мне нужен совет, как это реализовать, если хотите.

1 Ответ

3 голосов
/ 22 апреля 2019

Это должно работать до тех пор, пока ваши объекты datetime распознаются функцией Python list.sort().Мне показалось, что он работает с библиотеками datetime и time.

from operator import itemgetter

consolidatedlist = [d for list_of_dicts in combinedlist for d in list_of_dicts]
consolidatedlist.sort(key=itemgetter('tstamp'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...