从给定的文本文件(python)创建字典

时间:2014-12-11 23:52:10

标签: python-3.x for-loop dictionary split strip

我需要从我给出的文件中创建一个字典。名为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个值来解包。"

2 个答案:

答案 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)