2017-09-14 134 views
1

我有20部電影名單,保存這樣的多個列表:比較兩個列表,並創建一個基於匹配的數據

library = [ 
['name1','director1','genre1',running_time_in_mins_1], 
['name2','director2','genre2',running_time_in_mins_2], 

等多達20

基礎上圖書館,我需要能夠顯示特定流派的所有電影的平均運行時間。我希望輸出如下內容:「xyz的平均運行時間是###分鐘」。在圖書館中可能有多種類型(目前在我的圖書館中有6種)或電影。

我可以用

genre=[] 
for y in range (0,len(library)): 
    if (library[y][2]) not in genre: 
     genre.append(library[y][2]) 

話,我想我會爲每個類型創建單獨的列表和添加匹配的運行時間,但是,這並不工作

for x in range (len(library)): 
    for z in range(0,(len(genre))): 
     if library[x][2] == genre[z]: 
      z=[] 
      z.append(library[x][3]) 
print(z) 
+0

將列表導入熊貓並使用groupby。 –

回答

0

創造獨特風格的列表pandas是一個很好的圖書館,它可以完成你想要的任務,儘管學習起來有點棘手。

現在,試試:

for genre in set(row[2] for row in library): 
    times = [row[3] for row in library if row[2]==genre] 
    print("average runtime for", genre, "is", sum(times)/len(times)) 
0

List comprehensions是一個非常有用的工具

獲得獨特的董事名單:

>>> library = [['n1', 'd1', 30], ['n2', 'd2', 40], ['n1', 'd2', 20]] 
>>> set([x[1] for x in library]) 
set(['d2', 'd1']) 

獲取的時間列表具有特定名稱

>>> times = [x[2] for x in library if x[0] == 'n1'] 
[30, 20] 

計算的平均時間

>>> sum(times)/len(times) # python 3 
25 

但名單的名單真的不是最佳的,使得代碼不可讀(什麼是x[0]?)。根據你如何獲得數據,你想要做什麼以及你想花多少時間學習更多的Python /庫,我會建議:字典列表,類列表,熊貓數據框或數據庫。

相關問題