是否可以从未解析的字符串列表构建字典理解而不进行双重拆分?

mer*_*011 4 python dictionary dictionary-comprehension

考虑以下字典理解:

foo = ['super capital=BLUE', 'super foo=RED']
patternMap = {x.split("=")[0]:x.split("=")[1] for x in foo}
Run Code Online (Sandbox Code Playgroud)

它相当简洁,但我不喜欢我需要打x.split('=')两次电话的事实.我尝试了以下但它只会导致语法错误.

patternMap = {y[0] : y[1] for y in x.split('=') for x in foo}
Run Code Online (Sandbox Code Playgroud)

有没有"正确"的方法来实现前两行的结果,而不必调用x.split()两次或更冗长?

Ste*_*uch 6

直接dict与元组一样:

码:

patternMap = dict(x.split('=') for x in foo)
Run Code Online (Sandbox Code Playgroud)

测试代码:

foo = ['super capital=BLUE', 'super foo=RED']
patternMap = {x.split("=")[0]: x.split("=")[1] for x in foo}
print(patternMap)

patternMap = dict(x.split('=') for x in foo)
print(patternMap)

# or if you really need a longer way
patternMap = {y[0]: y[1] for y in (x.split('=') for x in foo)}
print(patternMap)
Run Code Online (Sandbox Code Playgroud)

结果:

{'super capital': 'BLUE', 'super foo': 'RED'}
{'super capital': 'BLUE', 'super foo': 'RED'}
{'super capital': 'BLUE', 'super foo': 'RED'}
Run Code Online (Sandbox Code Playgroud)