从文件创建具有/列表理解的字典

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来处理文件对象;它确保文件在读取完成或引发异常后再次关闭。

它也可以通过字典理解来完成,但这通常会变得非常难看,因为您必须使用额外的单元素循环来提取键值对,或者将行拆分两次。