有没有可能从一个未分析的字符串列表中构造一个字典理解而不进行双重拆分?

2024-09-30 02:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下词典理解:

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

它相当简洁,但我不喜欢这样一个事实:我需要调用x.split('=')两次。我尝试了以下操作,但结果只是语法错误。你知道吗

patternMap = {y[0] : y[1] for y in x.split('=') for x in foo}

是否有一种“适当”的方法来实现前两行的结果,而不必调用x.split()两次或更冗长?


Tags: 方法inforfoobluered事实词典
2条回答

直接转到dict,元组如下:

代码:

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

测试代码:

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)

结果:

{'super capital': 'BLUE', 'super foo': 'RED'}
{'super capital': 'BLUE', 'super foo': 'RED'}
{'super capital': 'BLUE', 'super foo': 'RED'}

我不知道它是否更详细,但是这里有一个不需要调用split两次的替代方法:

patternMap = {x1:x2 for x1, x2 in map(lambda f: f.split('='), foo)}

相关问题 更多 >

    热门问题