从包含key=valu的字符串生成字典

2024-04-29 02:49:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用这样一个字符串建立一个字典:

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:dictionary update sequence element#0的长度为1;需要2” 关键点的下划线可能是个问题吗?因为据我所知,根据this,它应该是正确的表示法。你知道吗

谢谢大家!你知道吗


Tags: 字符串dictionary字典错误updatedictdxlvalueerror
2条回答

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

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

你可以使用以下的听写理解:

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

相关问题 更多 >