考虑以下字典理解:
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()
两次或更加详细?
答案 0 :(得分:6)
直接使用类似的元组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'}
答案 1 :(得分:0)
我不知道它是否更详细,但是如果没有两次调用split
,这是另一种选择:
patternMap = {x1:x2 for x1, x2 in map(lambda f: f.split('='), foo)}