2014-09-20 44 views
1

我想要使用Counter庫的列表中的數字的頻率。此外,我得到的密鑰和值分別使用keys = Counter(list).keys()values = Counter(list).values(),其中list是數字列表。它們的輸出是如下的形式:如何在Python 3.4中使用dict_values生成餅圖?

dict_keys(['0.2200', '0.2700', '0.6200', '0.3000', '0.2500', '0.3400', '0.5600', '0.3900', '0.5400', '0.5500', '0.7500', '0.4100', '0.2800', '0.4200', '0.3800', '0.6600', '0.2000', '0.5200', '0.7200']) 

和, dict_values([15,3,6,13,6,3,1,3,3,5,4,14,8,5,3, 5,11,3,9])

現在我想用鑰匙和我做到了以如下方式取值生成餅圖:

import matplotlib.pyplot as pyplot 
pyplot.axis("equal") 
pyplot.pie(float(values),labels=float(keys),autopct=None) 
pyplot.show() 

但是,我得到的錯誤是:

TypeError: float() argument must be a string or a number, not 'dict_values' 

有沒有什麼辦法將dict_values轉換爲字符串或數字,因爲用於生成餅圖的函數只接受字符串或數字?

回答

6

您通過值需要循環並分別將它們轉換到彩車:

pyplot.pie([float(v) for v in values], labels=[float(k) for k in keys], 
      autopct=None) 

[expression for target in iterable]被稱爲列表理解和生成一個列表對象。

我不會創建兩次Counter();只需創建一次並重復使用:

counts = Counter(yourlist) 
pyplot.pie([float(v) for v in counts.values()], labels=[float(k) for k in counts], 
      autopct=None) 
+0

非常感謝。您的解決方案完全按照我需要的方式生成派。我會記住,我必須從現在開始單獨轉換這些值。再次感謝 :) – Sukarma 2014-09-20 16:23:49