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

时间:2014-10-31 17:19:54

标签: python dictionary split

我正在尝试读取一个txt文件并将数据放入字典中。我的文件看起来像这样:

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(":")

如何将名称指定为键,将整数指定为值并将其放入字典?

5 个答案:

答案 0 :(得分:4)

像这样:

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}}会为您完成这项工作。

答案 1 :(得分:0)

你的问题在于

name = line.split(":")

split()将返回一个列表。您可以像这样解压缩列表:

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

然后做:

mydict[name] = othervalue

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:-1)

您可以使用以下代码来获得所需的输出。您可以使用拆分分隔单词。 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']}

答案 4 :(得分:-2)

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名称是关键,年龄将是存储的值