首页 > 解决方案 > 使用字典理解将文件中的键、值解析为字典

问题描述

我在这个网站上查看了像我这样的例子,但找不到答案。

我正在解析的文件是一个简单的文件,其中键值对用冒号分隔。

one:two
three:four
five:six
seven:eight
nine:ten
sample:demo

我认为应该有一个使用字典理解的简单解决方案。

我的第一次尝试是

fin = open('f00.txt', 'r')

L = {kv[0]:kv[1] for line in fin for kv in line.strip().split(':')}

这产生了

{'o': 'n', 't': 'e', 'f': 'i', 's': 'a', 'e': 'i', 'n': 'i', 'd': 'e'}

我能够得到结果的一种方法是

L = {line.strip().split(':')[0]:line.strip().split(':')[1] for line in fin}

但这需要调用split两次(索引为 0 和 1)

我能够获得结果的另一种方法是:

d = {}
for line in fin:
    kv = line.strip().split(':')
    d[kv[0]] = kv[1]

{'one': 'two', 'three': 'four', 'five': 'six', 'seven': 'eight', 'nine': 'ten', 'sample': 'demo'}

只是想知道是否对什么是微不足道的任务有一个简单的理解。

感谢您提供的任何投入。

标签: pythonpython-3.x

解决方案


您可以使用dict理解:

result = dict(i.strip('\n').split(':') for i in open('filename.txt'))

输出:

{'one': 'two', 'three': 'four', 'five': 'six', 'seven': 'eight', 'nine': 'ten', 'sample': 'demo'}

推荐阅读