2016-05-07 98 views
0

我在這裏有一個問題,它計數的空列表,不得計數字典計數值

有沒有辦法不計算空列表?

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

在你的例子中,我看到4沒有空列表,而不是5 –

回答

2

dic.values()包裹全部從裏面另一個列表不同的密鑰值:

>>> dic.values() 
[[[], [], [(3, 2, 0)], [(3, 1, 0)], [], [], [(4, 3, 2), (4, 3, 0)], [(4, 2, 0)]]] 

,因爲你只有一個ke y dic.values()中只有一個元素,當您執行x = list(map(len, dic.values()))時,您將獲得8,因爲這是內部列表上的長度。

您需要遍歷內部列表dic.values()[0],並從那裏長度:

>>> sum(map(len, dic.values()[0])) 
5 

UPDATE:如果您正在使用Python 3中,你可以得到的第一個值作爲list(dic.values())[0]

>>> sum(map(len, list(dic.values())[0])) 
5 

這個SO Post列出了許多方法可以得到第一個值。

+0

我得到一個錯誤TypeError:'dict_values'對象不支持索引 – jack

+0

看來你使用的是python3。請嘗試'list(dic.values())[0]' – AKS