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

Build dictionary from string containing key=value

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

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)

但它 Returns 错误 "ValueError: dictionary update sequence element #0 has length 1; 2 is required" 也许关键的下划线是一个问题?因为据我所知,根据 this 它应该是正确的表示法。

谢谢大家!

您可以使用以下字典理解,:

>>> 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(',')])

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

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