python - 使用列表理解将字符串转换为字典

标签 python string dictionary list-comprehension generator-expression

这个问题我遇到过好几次,但似乎找不到一个简单的解决方案。 假设我有一个字符串

string = "a=0 b=1 c=3"

我想将其转换为字典,其中 a、b 和 c 是键,0、1 和 3 是它们各自的值(转换为 int)。显然我可以这样做:

list = string.split()
dic = {}
for entry in list:
    key, val = entry.split('=')
    dic[key] = int(val)

但我不太喜欢那个 for 循环,它看起来很简单,您应该能够将它转换为某种列表理解表达式。这适用于 val 可以是字符串的稍微简单的情况。

dic = dict([entry.split('=') for entry in list])

但是,我需要即时将 val 转换为 int,这样做在语法上是不正确的。

dic = dict([[entry[0], int(entry[1])] for entry.split('=') in list])

所以我的问题是:有没有办法使用列表理解来消除 for 循环?如果没有,是否有一些内置的 python 方法可以为我做到这一点?

最佳答案

你是这个意思吗?

>>> dict( (n,int(v)) for n,v in (a.split('=') for a in string.split() ) )
{'a': 0, 'c': 3, 'b': 1}

关于python - 使用列表理解将字符串转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246444/

相关文章:

python random.sample 在所有可能的结果之后停止采样

python - CSV - 使用 Python 的 MYSQL

python - CUDA 不支持边界检查

windows - 批量替换多个不同的字符串

c - 使用字符串索引数组 (C)

python - 输入特定值时在列表中定位字典

python - 运行周期性任务

python - 多元回归 Python

c - 返回文本中任意字符的位置

python - 如何获取嵌套字典中的最大值以及包含它的键?