首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python字典文件未转换为数组

Python字典文件未转换为数组
EN

Stack Overflow用户
提问于 2017-09-01 11:53:28
回答 2查看 32关注 0票数 0

我正在加载一个包含单词和定义的文件,每一行都用冒号分隔。这是一个样本。

代码语言:javascript
复制
Dissaray:A state of confusion and disorderliness
Staid:Steady and serious
Contemptible:Unworthy, wretched, mean
Intertwine:To connect or associate two things
Unwarranted:Not based on truth or valid circumstances
Punctuate:To specifically point out
Validate:To state the soundness or truth of something
Conducive:To contribute in a useful way

我试图用以下代码读取该文件:

代码语言:javascript
复制
print("Currently loading file for your level")
dictionary = {}
with open("level"+str(level)+".txt","r+") as f:
    for line in f:
        print line
        line.split(":")
        dictionary[line[0]] = line[1]
print("Dictionary file has been loaded")
print(dictionary)

这些行打印正确,但是当我打印dictionary数组时,我会得到以下内容。{'A': 'p', 'C': 'o', 'B': 'e', 'E': 'm', 'D': 'e', 'G': 'r', 'F': 'i', 'I': 'r', 'H': 'i', 'J': 'o', 'M': 'i', 'L': 'u', 'O': 'p', 'N': 'o', 'P': 'a', 'S': 'u', 'R': 'e', 'U': 'n', 'T': 'r', 'W': 'a', 'V': 'e', 'Z': 'e'}

我不知道这里发生了什么,有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-01 11:55:40

str.split不工作在适当的地方。您需要将它分配给line,否则,您将索引原始行:

代码语言:javascript
复制
for line in f:
   line = line.split(":")
   dictionary[line[0]] = line[1]

更重要的是,您也可以简单地这样做:

代码语言:javascript
复制
dictionary = dict(line.split(':') for line in f)

从生成器表达式构建字典。

票数 3
EN

Stack Overflow用户

发布于 2017-09-01 11:56:15

问题是.split()返回它的值,而不是修改它的参数。实际上,它必须这样做,因为字符串在Python中是不可变的。所以你只需要改变:

代码语言:javascript
复制
line.split(":")
dictionary[line[0]] = line[1]

代码语言:javascript
复制
line_parts = line.split(":")
dictionary[line_parts[0]] = line_parts[1]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45999744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档