从包含key = value的字符串构建字典

时间:2015-01-26 16:13:57

标签: python dictionary python-2.6

我正在尝试使用这样的字符串构建字典:

paramString = (dtoxe_n_18_cdmos=0.0000e+000, dxl_n_18_cdmos=0.0000e+000, du0_n_18_cdmos=0.0000e+000, dvth0_n_18_cdmos=0.0000e+000)

我用过

paramDict = dict(paramString)

但它返回错误" ValueError:字典更新序列元素#0的长度为1; 2是必需的" 或许关键词中的下划线是一个问题吗?因为据我所知,根据this,它应该是正确的符号。

感谢男生和女生们!

2 个答案:

答案 0 :(得分:4)

您可以使用以下词典理解:

>>> s="dtoxe_n_18_cdmos=0.0000e+000, dxl_n_18_cdmos=0.0000e+000, du0_n_18_cdmos=0.0000e+000, dvth0_n_18_cdmos=0.0000e+000"
>>> d={k:v for k,v in [i.split('=') for i in s.split(',')]}
>>> d
{' du0_n_18_cdmos': '0.0000e+000', ' dxl_n_18_cdmos': '0.0000e+000', 'dtoxe_n_18_cdmos': '0.0000e+000', ' dvth0_n_18_cdmos': '0.0000e+000'}

首先,您可以按,拆分字符串,然后用=拆分。您可以使用以下列表理解[i.split('=') for i in s.split(',')]来完成它,然后循环它并选择您的键和值!

如果您使用的是python 2.4,则需要使用dict

>>> d=dict([i.split('=') for i in s.split(',')])

答案 1 :(得分:1)

一个非常丑陋但有效的解决方案:

parmDict = eval("dict(" + paramString + ")")