2015-10-18 28 views
-1

我正在製作IMDB電影列表以列出電影名稱,鏈接和我的評級。這裏是代碼:Python代碼不列出CSV文件中的第一個Lİne

import csv 
r_list = open('ratings.csv') 
rd = csv.reader(r_list, delimiter=',', quotechar='"') 
movies = {} 
for row in rd: 
    movies[row[5]] = [row[0], row[8]] 
print(len(movies)) 

輸出是500,但實際數字是501.它不顯示第一行。但是當我爲包含總共6行的列表做同樣的事情時,它會計算第一行並返回'6'。 爲什麼?

回答

0

因爲您正在使用字典,並且您的行[5]是重複的並被替換,因此會縮短列表的重複次數(減1)。在字典中不能有兩個相同的密鑰。這是非法的。 Python通過用新值覆蓋(替換)你所擁有的密鑰的值來靜靜地處理它。

例如

data = [('rambo', 1995), ('lethal weapon', 1992), ('rambo', 1980)] 
movies = {} 
for row in data: 
    movies[row[0]] = row[1] 

print len(data) # -> 3 
print len(movies) # -> 2 
print movies['rambo'] # -> 1980 

解決方案是不使用字典,如果你不想重複的鍵互相替換。

+0

謝謝你的幫助。這很有用。關鍵在於重複某個時刻。你是對的。 – 0rhodabasi

相關問題