阅读文件和打印字典

问题描述:

这里是我的输入文件:阅读文件和打印字典

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

您应该使用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

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

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分解成单个字符,并添加这些,你想可能不是什么。