无法计算列表中元组内的项目

Unable to count items inside a tuple inside a list

我目前有一个元组列表,我正在尝试计算列表中的元组数量,以便我可以进行其他计算,但我似乎无法让它工作。

ties = [(84,40,{'variable1' : 0.11225, 'variable2': -0.2581}),
        (84,4,{'variable1' : -0.18855, 'variable2': -0.6458}), 
        (84,23,{'variable1' : 0.05144, 'variable2': -0.7581})]

ties = list((int(j) for i in ties for j in i))

res = len(ties) 

#alternatively I also tried

from itertools import chain 

res = len(list(map(int, chain.from_iterable(ties))))

以上(两者)都会引发错误 TypeError: 'int' object is not iterable,我不明白为什么。想法?

提前致谢!

*** 编辑 ***

修复了语法错误,现在可以使用了,谢谢大家的建议

isinstance 过滤的列表理解,假设 ties 实际上是以下对象(因为 OP 的语法无效)

ties = [
    (84,40,{'variable1' : 0.11225, 'variable2': -0.2581}), 
    (84,4,{'variable1' : -0.18855, 'variable2': -0.6458}), 
    (84,23,{'variable1' : 0.05144, 'variable2': -0.7581})
]

count_tuples = len([o for o in ties if isinstance(o, tuple)])

打印:3

元组不能迭代。因此,您在尝试执行代码时遇到错误。此外,您发布的以下代码存在语法错误。

ties = [(84,40,{'variable1' : 0.11225, 'variable2': -0.2581}), 84,4,{'variable1' : -0.18855, 'variable2': -0.6458}), 84,23,{'variable1' : 0.05144, 'variable2': -0.7581})]

您似乎错过了 84,484,23.

之前的左括号

尝试以下操作:

ties = [(84,40,{'variable1' : 0.11225, 'variable2': -0.2581}), (84,4,{'variable1' : -0.18855, 'variable2': -0.6458}), (84,23,{'variable1' : 0.05144, 'variable2': -0.7581})]

ties_len = list((len(i) for i in ties))

如果你只是想知道列表中元组的数量,你只需要这样:

ties = [
    (84,40,{'variable1' : 0.11225, 'variable2': -0.2581}), 
    (84,4,{'variable1' : -0.18855, 'variable2': -0.6458}), 
    (84,23,{'variable1' : 0.05144, 'variable2': -0.7581})
]

res = len(ties)
# 3

如果你想要一个包含列表中元组长度的列表,你需要使用:

res = [len(tie) for tie in ties]
# [3, 3, 3]