gpt4 book ai didi

python - 合并来自多个不同长度列表的数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:16 25 4
gpt4 key购买 nike

我有一个返回三组数据的数据库查询。它采用这种格式。

year = (('Adison', '355', 4), ('windsor windham', '455', 6), ('windham', '655', 2), ('btown', '233', 5))
month = (('Adison', '355', 2), ('windham', '655', 1))
week = (('btown', '233', 8), ('Adison', '355', 9))

年份列表总是最长且值最多的。我需要从月和周列表中的每个元素中获取最后一个值,并将它们附加到基于城镇的适当位置的年列表中。

如果月或周中没有相应的值,我需要附加一个 0。理想情况下使其看起来像这样:

year = (('Adison', '355', 4, 2, 9), ('windsor windham', '455', 6, 0, 0), ('windham', '655', 2, 1, 0), ('btown', '233', 5, 0, 8))

我曾尝试将两个列表放在一个 for 循环中并使用 if in 条件来检查值,但我认为我忽略了一些东西并且出现了索引错误。我试过这样的事情:

for each in year:
for part in month:
if part in each:
each.append(part[-1])
else:
each.append(0)

我知道必须有更好的方法,并且确实可以实现这一目标。有没有我应该研究的工具或模块?我玩过 zip 但因为它们的长度不一样,所以我遇到了麻烦。谢谢!

编辑

我知道我上面有元组,在我的代码中,在修改之前将它们全部转换为列表对象。我也在使用 Python 3.6

最佳答案

您可以从 monthweek 元组构建字典,并从中获取值以创建新的 sub 元组附加新值。使用 dict.get(..., 0) 允许为没有月或周数据的城市设置默认值 0:

dct_mth = {k: v for k, _, v in month}
dct_week = {k: v for k, _, v in week}

year = list(year) # make container mutable
for i, yr in enumerate(year):
year[i] += (dct_mth.get(yr[0], 0), dct_week.get(yr[0], 0))

print(year)
# [('Adison', '355', 4, 2, 9), ('windsor windham', '455', 6, 0, 0), ('windham', '655', 2, 1, 0), ('btown', '233', 5, 0, 8)]

关于python - 合并来自多个不同长度列表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45303515/

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