gpt4 book ai didi

python - 将三个列表合并到一个字典中

转载 作者:行者123 更新时间:2023-11-28 19:34:17 24 4
gpt4 key购买 nike

我需要将三个列表合并到一个字典中。这些列表来自阅读我格式化的 txt 文件,这里是该文件的片段:

maker =['Horsey', 'Ford', 'Overland', 'Scripps-Booth']

year = ['1899', '1909', '1911', '1913']

model = ['Horseless', 'Model T', 'OctoAuto', 'Bi-Autogo']

进入以下:

car_dict = {'Horsey':1899,'Horseless','Ford':1909,'Model T','Overland' : 1911, 'OctoAuto', 'Scripps-Booth' : 1913, 'Bi-Autogo'}

这是我做的:

def car_data_merge(car_maker,car_model,car_year):
car_dict = {}
car_merge = []

car_dict = defaultdict(partial(defaultdict,list))

for (car_maker,car_model,car_year) in zip(car_maker,car_model,car_year):
car_dict[car_year][car_model].append(car_maker)
print(car_dict)

当我输入这个时,我得到:

{'Horsey': defaultdict(<class 'list'>, {'1899': ['Horseless']})

没有显示列表中的所有数据,我不想显示 defaultdict

当我尝试以下操作时:

def car_data_merge(car_maker,car_data):
car_dict = {}
car_merge = []
car_merge = zip(car_maker,car_data)
car_dict = dict(car_merge)
print(car_dict)

### car_data holds both year and model ####

只显示部分数据:

'Horsey':'Horseless',':1909,'Model T

我该怎么办?

最佳答案

您使用 zip 走在正确的轨道上,但要注意:

The returned list is truncated in length to the length of the shortest argument sequence.

如果您对此没问题,您可以将数据压缩到元组列表中,压缩 key ,然后将所有内容交给 dict()

如果您想处理缺失值,请查看 itertools izip_longest (Python 2)zip_longest (Python 3)在哪里

If the iterables are of uneven length, missing values are filled-in with fillvalue.

try:
# Python 2
from itertools import izip_longest
zip_longest = izip_longest
except ImportError:
# Python 3
from itertools import zip_longest

from pprint import pprint


def main():
maker =['Horsey', 'Ford', 'Overland', 'Scripps-Booth', 'FutureX', 'FutureY']
year = ['1899', '1909', '1911', '1913', '20xx']
model = ['Horseless', 'Model T', 'OctoAuto', 'Bi-Autogo']

car_data = dict(zip(maker, zip(year, model)))
car_data_longest = {mk: (yr, md) for mk, yr, md in zip_longest(maker, year, model)}

pprint(car_data)
pprint(car_data_longest)

输出:

{'Ford': ('1909', 'Model T'),
'Horsey': ('1899', 'Horseless'),
'Overland': ('1911', 'OctoAuto'),
'Scripps-Booth': ('1913', 'Bi-Autogo')}
{'Ford': ('1909', 'Model T'),
'FutureX': ('20xx', None),
'FutureY': (None, None),
'Horsey': ('1899', 'Horseless'),
'Overland': ('1911', 'OctoAuto'),
'Scripps-Booth': ('1913', 'Bi-Autogo')}

关于python - 将三个列表合并到一个字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15698427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com