gpt4 book ai didi

python - 类似于 zip() 的内置函数,用 None 值从左边填充不等长度

转载 作者:太空狗 更新时间:2023-10-30 01:47:34 25 4
gpt4 key购买 nike

是否有一个类似于 zip() 的内置函数,但是填充结果使得结果列表的长度是最长输入的长度并从左边填充列表与例如?

已经有一个 answer使用 zip_longest来自 itertools 模块和相应的 question与此非常相似。但是使用 zip_longest 似乎只能从右边填充缺失的数据。

这可能是一个用例,假设我们只像这样存储名称(这只是一个例子):

header = ["title", "firstname", "lastname"]
person_1 = ["Dr.", "Joe", "Doe"]
person_2 = ["Mary", "Poppins"]
person_3 = ["Smith"]

没有其他排列,例如 (["Poppins", "Mary"], ["Poppins", "Dr", "Mary"]) 等等上。

如何使用内置函数获得这样的结果?

>>> dict(magic_zip(header, person_1))
{'title': 'Dr.', 'lastname': 'Doe', 'firstname': 'Joe'}
>>> dict(magic_zip(header, person_2))
{'title': None, 'lastname': 'Poppins', 'firstname': 'Mary'}
>>> dict(magic_zip(header, person_3))
{'title': None, 'lastname': 'Smith', 'firstname': None}

最佳答案

使用 zip_longest 但反转列表。

示例:

from itertools import zip_longest

header = ["title", "firstname", "lastname"]
person_1 = ["Dr.", "Joe", "Doe"]
person_2 = ["Mary", "Poppins"]
person_3 = ["Smith"]

print(dict(zip_longest(reversed(header), reversed(person_2))))
# {'lastname': 'Poppins', 'firstname': 'Mary', 'title': None}

关于您的用例:

>>> dict(zip_longest(reversed(header), reversed(person_1))) 
{'title': 'Dr.', 'lastname': 'Doe', 'firstname': 'Joe'}
>>> dict(zip_longest(reversed(header), reversed(person_2)))
{'lastname': 'Poppins', 'firstname': 'Mary', 'title': None}
>>> dict(zip_longest(reversed(header), reversed(person_3)))
{'lastname': 'Smith', 'firstname': None, 'title': None}

关于python - 类似于 zip() 的内置函数,用 None 值从左边填充不等长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51878354/

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