考虑以下字典理解:
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()
两次或更冗长?
直接使用元组如 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'}