计算字典的值

时间:2016-05-07 14:57:26

标签: python

我在这里遇到问题,它计算了不能计算的空列表

有没有办法不计算空列表?

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

1 个答案:

答案 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列出了许多获得第一个值的方法。