【问题标题】:Transform a list in a dictionary转换字典中的列表
【发布时间】:2021-08-31 09:08:40
【问题描述】:

我需要在字典中转换列表 detail_flights。跟随列表的一部分(它更长但结构始终相同):

detail_flights = ['22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n6:20 – 8:00\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m', '22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n12:05 – 13:45\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m']

我想将列表的所有信息放在以下标题中:

detail_headers = ['departure_time', 'departure_airport', 'to_delete', 'arrival_airport', 'type_flight', 'duration']

我想得到这样的东西:

detail_flights = [{'departure_time': '22:20 – 23:55', 'departure_airport': 'BGY Bergamo Orio al Serio', 'to_delete': '-', 'arrival_airport': 'BCN Barcellona-El Pra', 'type_flight': 'diretto', 'duration': '1h 35', 'departure_time': '6:20 – 8:00', 'departure_airport': 'BCN Barcellona-El Prat', 'arrival_airport': 'BGY Bergamo Orio al Serio', 'type_flight': 'diretto', 'duration': '1h 40m'}, {....}]

这是我的代码:

def listToString(s): 
    str1 = " " 
    return (str1.join(detail_flights))
        
detail_flights = listToString(detail_flights)
detail_flights = detail_flights.split(sep='\n')

from itertools import zip_longest
detail_headers = ['departure_time', 'departure_airport', 'to_delete', 'arrival_airport', 'type_flight', 'duration']
d1=zip_longest(detail_headers,detail_flights)
print (dict(d1))

这是我的输出,它不能正常工作:

{'departure_time': '22:20 – 23:55', 'departure_airport': 'BGY Bergamo Orio al Serio', 'to_delete': '‐', 'arrival_airport': 'BCN Barcellona-El Prat', 'type_flight': 'diretto', 'duration': '1h 35m', None: '1h 45m'}

【问题讨论】:

    标签: python string list dictionary


    【解决方案1】:
    • Splitdetail_flights by \n 获取航班详情列表。
    • 使用zip 生成dict 的键值对
    detail_flights = ['22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n6:20 – 8:00\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m', '22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n12:05 – 13:45\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m']
    detail_headers = ['departure_time', 'departure_airport', 'to_delete', 'arrival_airport', 'type_flight', 'duration']
    
    detail_flights = detail_flights[0].split("\n")
    dict(zip(detail_headers,detail_flights))
    
    >> {'departure_time': '22:20 – 23:55',
     'departure_airport': 'BGY Bergamo Orio al Serio',
     'to_delete': '‐',
     'arrival_airport': 'BCN Barcellona-El Prat',
     'type_flight': 'diretto',
     'duration': '1h 35m'}
    

    【讨论】:

    • 谢谢!我想获得一个字典,其中包含列表 detail_flights 的所有元素,而不仅仅是第一个元素。嗬我能做到吗?非常感谢你
    【解决方案2】:
    detail_flights = ['22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n6:20 – 8:00\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m', '22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n12:05 – 13:45\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m']
        
    detail_headers = ['departure_time', 'departure_airport', 'to_delete', 'arrival_airport', 'type_flight', 'duration']
    dictionary = dict(zip(detail_flights , detail_headers ))
    
    print(dictionary)
    

    输出:

    {'22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n6:20 – 8:00\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m': 'departure_time', '22:20 – 23:55\nBGY Bergamo Orio al Serio\n‐\nBCN Barcellona-El Prat\ndiretto\n1h 35m\n12:05 – 13:45\nBCN Barcellona-El Prat\n‐\nBGY Bergamo Orio al Serio\ndiretto\n1h 40m': 'departure_airport'}
    

    【讨论】:

    • 谢谢,但我也想获取输出字典中的标题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 2017-04-23
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多