2017-04-07 249 views
0

我有people_idroom_id列的文件。我將所有文件讀入字典。Python字典和字典的列表中的鍵的平均值

people_id room_id 
1 8 
2 32 
3 8 
4 47 
5 12 
6 8 

和代碼

report_keys = ['people_id', 'room_id'] 
report = [] 
with open("file.txt") as f: 
    for line in f: 
     line = line.strip().split('\t') 
     d = dict(zip(report_keys, line)) 
     report.append(d) 

我想指望每間房的人。例如。對於room_id這個房間中的8個人數= 3以及房間中的人的平均值。

輸出:

Room_id 8 = 3 people 
Room_id 32 = 1 people 
Room_id 47 = 1 people 
Room_id 12 = 1 people 

平均數量的人簽入到一個房間。

我嘗試這樣做,

for key, value in report: 
    print(key, len([item for item in value if item])) 

但我的代碼只打印相同的值

+2

所需的輸出是什麼?這將工作:'print(key,sum(int(x)for x in value))'用於count和'print(key,sum(int(x)for x in value)/ len(value))'for平均? –

+0

每間客房的人數和平均人數。 – lukassz

+1

請發表一個當前和期望輸出的例子。 –

回答

1

我想你可以改變你的代碼怎麼讀檔案

report = {} 
with open("file.txt") as f: 
    for line in f: 
     line = line.strip().split('\t') 
     report[line[1]] = report.get(line[1],0) + 1 
0

關於什麼的使用pandas

import pandas as pd 

df = pd.read_csv("file.txt") 

df.groupby('room_id').size().to_dict() 
{8: 3, 32: 1, 12: 1, 47: 1} 
+0

我只能使用標準庫 – lukassz