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)
等等
这适用于制作字典,但是我很好奇这是否可以在一行中完成(例如,使用列表/字典理解).这可能,或者更简单/更简单的方法吗?
是的,您可以使用生成器表达式和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语句来处理文件对象; 它确保在读取完成或引发异常后再次关闭文件.
它也可以通过字典理解来完成,但是通常会变得非常难看,因为你必须使用额外的单元素循环来提取键值对,或者将线分割两次.