我正在尝试读取一个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(":")
如何将名称指定为键,将整数指定为值并将其放入字典?
答案 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
名称是关键,年龄将是存储的值