我需要从我给出的文件中创建一个字典。名为student_data.txt的文件为:
Joy - 100
Rita - 90
John - 80
Sheena - 100
Smith - 100
Karl - 90
Andrew - 100
Klara - 100
Sarah - 90
Amy - 80
Sandy - 100
我想创建一个字典,使用学生的名字作为关键字,将分数作为值。
以下是我尝试的内容:
myDictionary = {}
myFile = open("student_data.txt", 'r')
for line in myFile:
key, value = line.strip().split('-')
myDictionary[key.strip()] = value.strip()
当我编译并运行它时,我得到一个错误说" ValueError:需要多于1个值来解包。"
答案 0 :(得分:0)
您的代码应该有效。你确定文件中没有空白行吗?
试试这个:
for line in myFile:
pair = line.split('-')
myDictionary[pair[0].strip()] = pair[1].strip()
如果失败,您知道文件中的空行是您必须考虑的地方。
答案 1 :(得分:0)
我认为问题在您的文件中是空行。尝试在split
之前打印您阅读的行以获得线索:
myDictionary = {}
myFile = open("a.txt", 'r')
for line in myFile:
fields = line.strip().split('-')
if len(fields) == 2:
myDictionary[fields[0].strip()] = fields[1].strip()
print(myDictionary)
修复了处理空行的代码 - 我们检查我们是否捕获了正好2个字段,只有在这种情况下才更新字典。
另一种方法是检查内容的行:
myDictionary = {}
myFile = open("a.txt", 'r')
for line in myFile:
if line.isspace():
continue
key, value = line.strip().split('-')
myDictionary[key.strip()] = value.strip()
print (myDictionary)