从文件创建具有/列表理解的字典
Create a dictionary w/ list comprehension from a file
假设我有这个代码:
someDict = {}
for line in open("example.txt"):
key, val = line.strip().split(",")
someDict[key] = val
与example.txt为每行两条数据,以逗号分隔,例如:
one,un
two,deux
three,trois
等等
这适用于制作字典,但是我很好奇这是否可以在一行中完成(例如 list/dictionary 理解)。这可能吗,或者其他 shorter/easier 方法来做到这一点?
是的,你可以用 generator expression and the dict()
callable:
with open('example.txt') as fileobj:
someDict = dict(line.strip().split(',', 1) for line in fileobj)
我将拆分限制为一次;这允许值包含逗号而不打断表达式。
dict()
可调用函数采用一系列(键、值)对,因此将一行恰好拆分为两个元素正好满足该要求。
我用了一个with
statement来处理文件对象;它确保文件在读取完成或引发异常后再次关闭。
它也可以通过字典理解来完成,但这通常会变得非常难看,因为您必须使用额外的单元素循环来提取键值对,或者将行拆分两次。
假设我有这个代码:
someDict = {}
for line in open("example.txt"):
key, val = line.strip().split(",")
someDict[key] = val
与example.txt为每行两条数据,以逗号分隔,例如:
one,un
two,deux
three,trois
等等
这适用于制作字典,但是我很好奇这是否可以在一行中完成(例如 list/dictionary 理解)。这可能吗,或者其他 shorter/easier 方法来做到这一点?
是的,你可以用 generator expression and the dict()
callable:
with open('example.txt') as fileobj:
someDict = dict(line.strip().split(',', 1) for line in fileobj)
我将拆分限制为一次;这允许值包含逗号而不打断表达式。
dict()
可调用函数采用一系列(键、值)对,因此将一行恰好拆分为两个元素正好满足该要求。
我用了一个with
statement来处理文件对象;它确保文件在读取完成或引发异常后再次关闭。
它也可以通过字典理解来完成,但这通常会变得非常难看,因为您必须使用额外的单元素循环来提取键值对,或者将行拆分两次。