python - 是否可以在没有双重拆分的情况下从未解析的字符串列表构造字典理解?

标签 python dictionary dictionary-comprehension

<分区>

考虑以下字典理解:

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'}

关于python - 是否可以在没有双重拆分的情况下从未解析的字符串列表构造字典理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49001176/

相关文章:

python - 通过列表理解将元组列表转换为具有重复键的字典?

python - Python 中图像中文本的 Unicode 问题

python - 通常的技巧并不能解决 Django 中的 "expected string or bytes-like object"

python - 在字典字典中查找多个最小值

python - 将 for 循环转换为字典理解

python - 在 for 循环中从列表中删除元素

java - 如何在现有的Java应用程序中添加Python模块

javascript - 如何在ajax调用后重新加载CSS

python - 如何在我的函数中替换 `eval`?

python - 如何将嵌套的 python 字典转换为简单的命名空间?