我在这里遇到问题,它计算了不能计算的空列表
有没有办法不计算空列表?
dic ={None: [[], [], [(3, 2, 0)], [(3, 1, 0)], [], [], [(4, 3, 2), (4, 3, 0)], [(4, 2, 0)]]}
x = list(map(len, dic.values()))
print(x[0])
需要输出
5
我的代码Outpute
8
答案 0 :(得分:2)
dic.values()
将来自另一个列表中不同键的所有值包装起来:
>>> dic.values()
[[[], [], [(3, 2, 0)], [(3, 1, 0)], [], [], [(4, 3, 2), (4, 3, 0)], [(4, 2, 0)]]]
因为,您只有一个键,dic.values()
中只有一个元素,当您执行x = list(map(len, dic.values()))
时,您会获得8
,因为它是内部列表中的长度。
您需要遍历内部列表dic.values()[0]
并从中获取长度:
>>> sum(map(len, dic.values()[0]))
5
更新:如果您使用的是python 3,则可以将第一个值设为list(dic.values())[0]
:
>>> sum(map(len, list(dic.values())[0]))
5
这个SO Post列出了许多获得第一个值的方法。