2016-10-19 108 views
-1

對於我在大學的最終Python分配,我需要在Jupyter Notebook內創建函數以進行小型研究。我需要從.csv文件創建字典和列表,併爲我從read_csv()函數獲得的字典構建函數。對於這項任務,我被允許提問和谷歌,因爲我必須做的功能是相當普遍的問題,人們進入。從字典中獲取數值的平均值並帶有值列表

的方式將這些字典看起來像我read_csv後()返回它們如下:

data_dict = { "abc" : [1, 2, 3, 4], 
       "def" : [4, 5, 6, 7], 
       "ghi" : [8, 9, 10, 11] 
      } 

所以基本上有大量與每個值的列表項的字典。我需要做的是總結每個列表的第一個索引的所有數字,並從總和中獲得平均值,然後是第二個索引,第三個索引等,返回所有平均值的列表。結果是這樣的:

averages = [4.333, 5.333, 6.333, 7.333] 

怎麼會這樣做而不導入任何東西?在過去的幾周裏,我們沒有真正談論過使用字典,我嘗試過在互聯網上尋找解決方案,但是找不到任何處理總結整數或漂浮在不同列表的特定索引處的問題。

+0

另外,請考慮使用'data_dict.values()' – jcfollower

+0

爲什麼不導入? –

+0

@PadraicCunningham家庭作業 – idjaw

回答

0

zip獲取列的值,並將每列的sum除以len

2

首先收集的值,轉置它們,然後其易:

# values of the dict 
values = data_dict.values() 

# transposed average 
averages = [sum(x)/float(len(x)) for x in zip(*values)] 
print (averages) 

回報:

[4.333333333333333, 5.333333333333333, 6.333333333333333, 7.333333333333333] 

較短'自明少'單行將是:

averages = [sum(x)/float(len(x)) for x in zip(*data_dict.values())] 
+1

你打電話給什麼名單? –

+0

你不應該調用'list',這是沒有必要的。 – idjaw

+0

我認爲不必要的那種,做了編輯。 –

0

一種方法可能是:

data_dict = { "abc" : [1, 2, 3, 4], 
       "def" : [4, 5, 6, 7], 
       "ghi" : [8, 9, 10, 11] 
      } 
l1 = data_dict.values() 
l2 = [] 
for i in zip(*l1): 
    l2.append(float(sum(i))/float(len(i))) 
print l2 
+0

哎呀,那天我很匆忙。編輯代碼。 – JeyJey