2015-01-26 3 views
1

나는이 같은 문자열에서 사전을 구축을 위해 노력하고있다 :빌드 사전 = 값

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에 따르면 올바른 표기법이어야합니다.

고마워요! 다음과 같은 DICT 이해를 사용할 수 있습니다

+0

죄송합니다, 버전 2.4.1.0, 죄송합니다! – moringana

+0

이 고풍 버전을 사용할 특별한 이유가 있습니까? – Fenikso

+0

아아아, 죄송합니다. Python 버전을 사용하고 있는지 확인할 수없는 PyScripter 버전 2.4.1.0을 사용하고 있습니까? 너희들은 빠르다! – moringana

답변

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(',')] 그것을 수행 할 수 있습니다 그리고 그것을 반복하고 귀하의 키와 값을 선택하십시오! 당신은 파이썬 2.4에있는 경우

당신은 dict를 사용해야합니다 :

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

OP (약간의 이유가있을 수 있음)는 Python 2.4를 사용하고 있습니다. dict-comp를 사용하고'dict'를 사용하여 다시 작성해야합니다 ... –

+0

오케이 ... OP Python 2.4를 사용하고 있지 않습니다 - PyScripter 버전과 혼동했습니다 :) –

+0

@JonClements yep, fixed,! – Kasramvd

1

매우 추한하지만 작업 솔루션 :

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