从文件创建一个包含列表推导的字典

Pyd*_*nia 0 python dictionary list-comprehension dictionary-comprehension

说我有这个代码:

someDict = {}
for line in open("example.txt"):
  key, val = line.strip().split(",")
  someDict[key] = val
Run Code Online (Sandbox Code Playgroud)

example.txt是每行上的两个数据,用逗号分隔,例如:

one,un
two,deux
three,trois
Run Code Online (Sandbox Code Playgroud)

等等

这适用于制作字典,但是我很好奇这是否可以在一行中完成(例如,使用列表/字典理解).这可能,或者更简单/更简单的方法吗?

Mar*_*ers 5

是的,您可以使用生成器表达式dict()可调用来执行此操作:

with open('example.txt') as fileobj:
    someDict = dict(line.strip().split(',', 1) for line in fileobj)
Run Code Online (Sandbox Code Playgroud)

我把分裂限制在一次; 这允许值包含逗号而不破坏表达式.

dict()可调用需要的(键,值)对一个序列,所以分割一行正好两个元件满足正是要求.

我用一个with语句来处理文件对象; 它确保在读取完成或引发异常后再次关闭文件.

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