在字典理解中临时分配变量的优雅方式?

tln*_*agy 1 python dictionary dictionary-comprehension

出于好奇,有可能将以下逻辑写成一个不错的词典理解吗?

a = "a c\nb c\nn q\n".split('\n')[:-1]

output = {}
for line in a:
    tmp = line.split(' ')
    output[tmp[0]] = tmp[1]
Run Code Online (Sandbox Code Playgroud)

我写了以下内容,但没有临时任务,我必须拆分两次,这是不幸的:

{line.split(' ')[0]:line.split(' ')[1] for line in a}
Run Code Online (Sandbox Code Playgroud)

有可能更优雅吗?

mgi*_*son 6

在这种情况下,我认为dict 构造函数更好一些,因为它将采用可迭代的2个序列:

dict(line.split() for line in a)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> a
['a c', 'b c', 'n q']
>>> dict(line.split() for line in a)
{'a': 'c', 'b': 'c', 'n': 'q'}
Run Code Online (Sandbox Code Playgroud)


小智 5

使用嵌套列表理解:

{p[0]:p[1] for p in [l.split(" ") for l in a]}
Run Code Online (Sandbox Code Playgroud)

输出:

{'a': 'c', 'b': 'c', 'n': 'q'}
Run Code Online (Sandbox Code Playgroud)