2017-06-14 169 views
-1

這裏是我的輸入文件:閱讀文件和打印字典

Drew, Matthew J., s1058828 
Howerth, Chloe E., s1002240 
Karolewicz, Michael J., s0995867 
Perzely, Connor J., s0958005 
Tanenbaum, Roberto, s1124377 
Guan, Tiffany, s1103462 
Jaligama, Vishnu Praneeth, s1143667 
Jin, Ailan, s1152308 

我是新來的Python和我的任務是把名冊的文件,並讓他們進入字典和「現在」打印鍵:值。我覺得我很接近這個。

roster = {} 
input_file = open("cs371598roster", "r") 
whole_thing = input_file.read() 
lines = whole_thing.split("\n") 

for line in lines: 
    last,first,ids = line.split(", ") 

for i in range(len(last)): 
    key = ids[i] 
    val = first[i] + " " + last[i] 
    roster[key] = val 

print(roster) 
+1

對不起,預期結果是什麼?現在,您正在爲行中的每一行分配變量'last,first,ids',並且僅使用最後一行,因爲您重新初始化了每行的變量。 – cosinepenguin

+0

這看起來像一個CSV格式的文件,所以你應該考慮使用'csv'模塊來讀取它。 – martineau

回答

0

您應該使用with | as並將id設置爲由空格連接的名字和姓氏的值。此作品:

roster = {} 
input_file = open("cs371598roster", "r") 
with input_file as f: 
    for line in f: 
     last, first, ids = line.split(", ") 
     roster[ids.strip()] = ' '.join([first, last]) 

print(roster) 
+0

爲什麼你使用'readlines()'方法調用?一個文件是可迭代的,所以'對於f:'來說就足夠了。 – Matthias

+0

好點啊。定影。 – JacobIRR

1

你就近了。但是,您不需要第二個循環。您可以在第一個名稱中添加所有名稱。

roster = {} 
input_file = open("cs371598roster", "r") 
whole_thing = input_file.read() 
lines = whole_thing.split("\n") 

for line in lines: 
    last, first, ids = line.split(", ") 
    roster[ids] = first + last 

print(roster) 

你剛纔溶液你們的名字和最後一行的IDS分解成單個字符,並添加這些,你想可能不是什麼。