gpt4 book ai didi

python 减少: find total size of all lists inside list of tuples

转载 作者:行者123 更新时间:2023-11-28 20:17:48 27 4
gpt4 key购买 nike

我的数据结构如下所示

itemsData = [('data1', [1, 2, 3, 4]), ('data2', [1, 2]), ('data3', [1, 2, 3])]

我想在上面的元组列表中找到项目的总数。对于上面的例子,len([1,2,3,4] + len([1,2]) + len([1,2,3]) = 9

reduce(lambda x,y: len(x[1]) + len(y[1]), itemsData )

我得到的错误是

TypeError: 'int' object has no attribute '__getitem__'

最佳答案

我会解释为什么你的代码不起作用

来自 https://docs.python.org/2/library/functions.html#reduce ,

The left argument, x, is the accumulated value and the right argument, y, is the update value from the iterable

所以在第一次迭代中,你的代码len(x[1]) + len(y[1])x=('data1', [1, 2, 3, 4]), y=('data2', [1, 2]),结果为6,

但是在第二次迭代中,您得到 x=6, y=('data3', [1, 2, 3])],所以 len(x[1]) 是无效的。

使用reduce的正确代码是

reduce(lambda x,y: x+len(y[1]), itemsData, 0)

这是因为

1st iteration ... x = 0, y = ('data1', [1, 2, 3, 4]), result = 4
2nd iteration ... x = 4, y = ('data2', [1, 2]), result = 6
3rd iteration ... x = 6, y = ('data3', [1, 2, 3]), result = 9

关于 python 减少: find total size of all lists inside list of tuples,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947667/

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