如何分割文件中的行并将数据放入python中的字典

问题描述:

我正在尝试读取txt文件并将数据放入字典中。我的文件看起来像这样:如何分割文件中的行并将数据放入python中的字典

Alex:3 
John:6 
Sam:8 

基本上,一个单词和整数用冒号分隔。我想打开并读取文件,将冒号分隔的每一行分开,并将数据放入如下字典中:

{'Alex':3,'John':6,'Sam':8}

到目前为止,我的代码如下所示:

d = {} 
f = open('scores.txt', 'r') 
for line in f.readlines(): 
    line = line.strip() 
    name = line.split(":") 

如何分配名称作为键和整数作为值,并把它放进字典?

+2

'当d =字典(line.strip()分割( ':'),例如,开放( 'scores.txt')线)'仅包含代码 – falsetru 2014-10-31 17:22:18

像这样:

d = {} 
f = open('scores.txt', 'r') 
for line in f.readlines(): 
    name,score = line.split(":") 
    d[name] = int(score) 

str.split()返回字符串中的所有标记列表。您可以使用我展示的语法获取这两个值。如你所见,你可以通过名称变量在字典中索引它。

编辑:由于@MauroBaraldi在评论中指出,你不需要line.strip()了,因为int()会为你做这项工作。

+1

只包含代码和没有解释的答案通常没有帮助。 – ErlVolton 2014-10-31 17:24:51

+0

@ErlVolton我通常先发布代码,然后立即编辑更详细的描述。抱歉。 – phantom 2014-10-31 17:27:18

+0

没关系,在你编辑之后,我提出了你的答案。 – ErlVolton 2014-10-31 17:27:45

你的问题是与

name = line.split(":") 

split()会返回一个列表。你可以解开列表如下:

name, othervalue = line.split(":") 

然后执行:

mydict[name] = othervalue 

d = {} 
f = open('scores.txt', 'r') 
for line in f: 
    line = line.strip() 
    name,age= line.strip(":") 
    d[name]=age 

在上面的代码,line.strip()将删除换行符,line.split(":")将分裂的“字符串: “,所以你会得到两个价值的名称和年龄将被存储。 d[name]=age名称是关键,年龄将在值存储

+2

答案没有任何解释通常没有帮助。 – ErlVolton 2014-10-31 17:24:32

+1

谢谢downvoting – Hackaholic 2014-10-31 17:24:53

以下是解决问题的另一种方法。

with open('scores.txt') as fp: 
    result = {} 
    for line in fp.readlines(): 
     key, value = line.split(':') 
     result[key] = int(value) 

一个很好的做法是使用with打开文件。当离开上下文时它会自动关闭。

您可以使用以下代码来获得所需的输出。您可以使用拆分来分隔单词。 rstrip用于删除换行符。

f = open('file name') 

dic = {} 

for l in f: 

    k,v = l.split(':') 
    v=v.rstrip('\n') 

    if k in dic: 

     dict.update({k:v }) 

    else: 

     dic[k] = [v] 
    print dic 

输出:

{'John': ['6'], 'Alex': ['3'], 'Sam': ['8']}