python - 将文本中的键值对解析为字典

标签 python file dictionary

我对 Python 还很陌生,我想知道如何将文本文件中已有的 key:value 形式的内容转换为 Python 字典?

例如。

2:red 
3:orange 
5:yellow 
6:green 

(每个键:值在单独的行上)

我看过其他帖子,但似乎都不起作用,我知道我做错了。到目前为止,我已经:

def create_colours_dictionary(filename):
    colours_dict = {}
    file = open(filename,'r')
    contents = file.read()

    for key in contents:
        #???
    return colours_dict

最佳答案

执行此操作的直接方法是使用传统的 for 循环,以及 str.split方法。

我不是从文件中读取数据,而是将输入数据作为多行字符串嵌入到脚本中,并使用 str.splitlines将其转换为字符串列表,以便我们可以对其进行循环,就像循环文件的行一样。

# Use a list of strings to simulate the file
contents = '''\
2:red
3:orange
5:yellow
6:green
'''.splitlines()

colours_dict = {}
for s in contents:
    k, v = s.split(':')
    colours_dict[k] = v

print(colours_dict) 

输出

{'2': 'red', '3': 'orange', '5': 'yellow', '6': 'green'}

请注意,只有在冒号周围没有空格的情况下,此代码才能正常工作。如果可能有空格(或行首或行尾有空格),您可以使用 str.strip删除它们的方法。


有几种方法可以使其更加紧凑。

我们可以使用嵌套在字典理解中的列表理解:

colours_dict = {k: v for k, v in [s.split(':') for s in contents]}

但在 generator expression 上使用 dict 构造函数会更加紧凑。 :

colours_dict = dict(s.split(':') for s in contents)

如果您不熟悉推导式,请参阅 List ComprehensionsDictionaries在官方教程中。

关于python - 将文本中的键值对解析为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44384360/

相关文章:

python - 函数装饰器指定 def 的前两行?

java.io.FileNotFoundException,为什么?

python - 将文件更改为列表更改为字典

python - 创建多维字典

python - 打开巨大的文本文件并执行正则表达式搜索

python - 如何在 matplotlib 中绘制非正方形图形大小的圆形饼图

python - 对嵌套字典的嵌套值求和

vba - 在 Excel 中使用 VBA 通过索引 # 选择字典项

python - 在windows下安装gevent

java - 从内部存储中获取图像时出现 FileNotFoundException