gpt4 book ai didi

python - 返回字典列表中第 n 个不同列表的 n 倍

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:31 28 4
gpt4 key购买 nike

我有一本与此类似的字典:

[{ 'key' : 10, 'values' : [ [1,2] [3,4,5] [6,7,8,9] ] }, { ... }]

只要最长列表中存在值,我就会尝试返回以“交集”为键、每个列表的第 n 个元素作为值的新字典。列表的长度不同,较短的列表只会多次附加其最后的值,例如:

{10:[1,3,6]}

{10:[2,4,7]}

{10:[2,5,8]}

{10:[2,5,9]}

我应该迭代为 itervalues()、iterkey() 或 iteritems() 吗?可能有类似的问题发布,但我找不到简洁解释的方法,我缺少关键字。

如何创建一个可以完成该任务的函数?

最佳答案

您需要迭代与最长数字列表中的项目一样多的次数。在每次迭代中,您都使用增量索引从每个列表中获取第 n 个值。

尝试这样的事情:

def intersect(key,values):
"""
Return n times the nth number of every list in `values`,
in a list of dictionaries.
"""
intersect_list = []
longest = max(map(len,values))
for n in range(longest):
# get the nth value if there is one, or just the last value
nth_values = [l[n] if n<len(l) else l[-1] for l in values]
intersect_list.append({key:nth_values})
return intersect_list

dict_list = [{ 'key':10, 'values':[[1,2],[3,4,5],[6,7,8,9]] }]
for d in dict_list:
print(intersect(d['key'],d['values']))

它将为您提供所需的输出:

[{10: [1, 3, 6]}, {10: [2, 4, 7]}, {10: [2, 5, 8]}, {10: [2, 5, 9]}]

关于python - 返回字典列表中第 n 个不同列表的 n 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294070/

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