Расширить массив данными из другого массива после определенного вхождения - PullRequest
0 голосов
/ 20 февраля 2019

Я хотел бы расширить содержимое массива содержимым из другого массива после наступления определенных "DEPARTURE DATE" и "DEPARTURE TIME", в частности новейшей даты и времени отправления.

Этоизвлекать из двух массивов, которые я сравниваю.

alilauro_live_departures_data = [{"COMPANY": "Alilauro", "DEPARTURE PORT": "Napoli Molo Beverello", "ARRIVAL PORT": "Ischia", "DEPARTURE DATE": "2019-02-18", "DEPARTURE TIME": "20:20", "ARRIVAL DATE": "2019-02-18", "ARRIVAL TIME": "21:40", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}, {"COMPANY": "Alilauro", "DEPARTURE PORT": "Ischia", "ARRIVAL PORT": "Napoli Molo Beverello", "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "06:30", "ARRIVAL DATE": "2019-02-19", "ARRIVAL TIME": "07:20", "DURATION": "00:50:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}]

alilauro_timetable = [{"COMPANY": "Alilauro", "DEPARTURE PORT": "Forio", "ARRIVAL PORT": "Napoli Molo Beverello", "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "06:45", "ARRIVAL DATE": "2019-02-19", "ARRIVAL TIME": "08:05", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}, {"COMPANY": "Alilauro", "DEPARTURE PORT": "Napoli Molo Beverello", "ARRIVAL PORT": "Ischia", "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "07:05", "ARRIVAL DATE": "2019-02-19", "ARRIVAL TIME": "08:25", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}, {"COMPANY": "Alilauro", "DEPARTURE PORT": "Napoli Molo Beverello", "ARRIVAL PORT": "Forio", "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "07:05", "ARRIVAL DATE": "2019-02-19", "ARRIVAL TIME": "08:25", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}]

Я ищу alilauro_live_departures_data для самого нового отправления

newest_departure_date = max((datetime.strptime(it["DEPARTURE DATE"]+it["DEPARTURE TIME"], "%Y-%m-%d%H:%M") for it in alilauro_live_departures_data))
newest_departure_date_str = datetime.strftime(newest_departure_date, "%Y-%m-%d%H:%M")

Затем я ищу вхождение в alilauro_timetable

re.search(alilauro_newest_departure, it["DEPARTURE DATE"]+it["DEPARTURE TIME"]) for it in alilauro_timetable)

Как мне продолжить alilauro_live_departures_data со всеми данными о вылетах после newest_departure_date в этом примере 2019-02-19 06:30?

1 Ответ

0 голосов
/ 20 февраля 2019

Приведенный ниже код сканирует 'ali_timetable' на наличие новых записей и добавляет их в 'ali_live_departures_data'

import datetime
import pprint

ali_live_departures_data = [
{"COMPANY": "Alilauro", "DEPARTURE PORT": "Napoli Molo Beverello", "ARRIVAL PORT": "Ischia",
 "DEPARTURE DATE": "2019-02-18", "DEPARTURE TIME": "20:20", "ARRIVAL DATE": "2019-02-18", "ARRIVAL TIME": "21:40",
 "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"},
{"COMPANY": "Alilauro", "DEPARTURE PORT": "Ischia", "ARRIVAL PORT": "Napoli Molo Beverello",
 "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "06:30", "ARRIVAL DATE": "2019-02-19", "ARRIVAL TIME": "07:20",
 "DURATION": "00:50:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}]

ali_timetable = [{"COMPANY": "Alilauro", "DEPARTURE PORT": "Forio", "ARRIVAL PORT": "Napoli Molo Beverello",
              "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "06:45", "ARRIVAL DATE": "2019-02-19",
              "ARRIVAL TIME": "08:05", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"},
             {"COMPANY": "Alilauro", "DEPARTURE PORT": "Napoli Molo Beverello", "ARRIVAL PORT": "Ischia",
              "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "07:05", "ARRIVAL DATE": "2019-02-19",
              "ARRIVAL TIME": "08:25", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"},
             {"COMPANY": "Alilauro", "DEPARTURE PORT": "Napoli Molo Beverello", "ARRIVAL PORT": "Forio",
              "DEPARTURE DATE": "2019-02-19", "DEPARTURE TIME": "07:05", "ARRIVAL DATE": "2019-02-19",
              "ARRIVAL TIME": "08:25", "DURATION": "01:20:00", "FERRY TYPE": "Aliscafo", "STATUS": "Active"}]

newest_departure_date = max(
    (datetime.datetime.strptime(it["DEPARTURE DATE"] + it["DEPARTURE TIME"], "%Y-%m- 
        %d%H:%M") for it in
                  ali_live_departures_data))
for time_table_entry in ali_timetable:
    entry_date_time = datetime.datetime.strptime(
    time_table_entry["DEPARTURE DATE"] + time_table_entry["DEPARTURE TIME"], "%Y-%m-%d%H:%M")
    if entry_date_time > newest_departure_date:
        ali_live_departures_data.append(time_table_entry)

pprint.pprint(ali_live_departures_data)

Вывод:

[{'ARRIVAL DATE': '2019-02-18',
  'ARRIVAL PORT': 'Ischia',
  'ARRIVAL TIME': '21:40',
  'COMPANY': 'Alilauro',
  'DEPARTURE DATE': '2019-02-18',
  'DEPARTURE PORT': 'Napoli Molo Beverello',
  'DEPARTURE TIME': '20:20',
  'DURATION': '01:20:00',
  'FERRY TYPE': 'Aliscafo',
 'STATUS': 'Active'},
{'ARRIVAL DATE': '2019-02-19',
 'ARRIVAL PORT': 'Napoli Molo Beverello',
 'ARRIVAL TIME': '07:20',
 'COMPANY': 'Alilauro',
 'DEPARTURE DATE': '2019-02-19',
 'DEPARTURE PORT': 'Ischia',
 'DEPARTURE TIME': '06:30',
 'DURATION': '00:50:00',
 'FERRY TYPE': 'Aliscafo',
 'STATUS': 'Active'},
 {'ARRIVAL DATE': '2019-02-19',
  'ARRIVAL PORT': 'Napoli Molo Beverello',
  'ARRIVAL TIME': '08:05',
  'COMPANY': 'Alilauro',
  'DEPARTURE DATE': '2019-02-19',
  'DEPARTURE PORT': 'Forio',
  'DEPARTURE TIME': '06:45',
  'DURATION': '01:20:00',
  'FERRY TYPE': 'Aliscafo',
  'STATUS': 'Active'},
 {'ARRIVAL DATE': '2019-02-19',
  'ARRIVAL PORT': 'Ischia',
  'ARRIVAL TIME': '08:25',
  'COMPANY': 'Alilauro',
  'DEPARTURE DATE': '2019-02-19',
  'DEPARTURE PORT': 'Napoli Molo Beverello',
  'DEPARTURE TIME': '07:05',
  'DURATION': '01:20:00',
  'FERRY TYPE': 'Aliscafo',
  'STATUS': 'Active'},
 {'ARRIVAL DATE': '2019-02-19',
  'ARRIVAL PORT': 'Forio',
  'ARRIVAL TIME': '08:25',
  'COMPANY': 'Alilauro',
  'DEPARTURE DATE': '2019-02-19',
  'DEPARTURE PORT': 'Napoli Molo Beverello',
  'DEPARTURE TIME': '07:05',
  'DURATION': '01:20:00',
  'FERRY TYPE': 'Aliscafo',
  'STATUS': 'Active'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...