2014-07-18 29 views
1

我有这样的字符串:如何在python中将特殊字符串映射为字典?

a_1 = 'A=1,B=3,C=3' 

我要地图这个字符串到dict的样子:

d_1 = {'A':1,'B':2,'C':3} 

我应该怎么办呢?我使用:

dict(a_1) 

但这返回一个错误:

ValueError: dictionary update sequence element #0 has length 1; 2 is required. 

回答

5

可以使用split()加上一个修真做到这一点:

d_1 = dict(pair.split("=") for pair in a_1.split(",")) 
+0

+1实际上它是 “近乎完美” 导致你的地图创建'{ 'A': '1',...}'他希望vals是整数:'{'A':1,...}' – alfasin

+0

非常棒的解决方案。非常感谢! –

+0

@ alfasin,这很好,因为我的字符串中的某些值也是一个“字符串”。 :) –

2

强迫到int

>>> s = 'A=1,B=3,C=3' 
>>> dict((k, int(v)) for k, v in [x.split("=") for x in s.split(",")]) 
{'A': 1, 'C': 3, 'B': 3} 

更新:试图强迫值int一个版本:

def maybeint(s): 
    try: 
     return int(s) 
    except ValueError: 
     return s 

s = 'A=1,B=3,C=3,D=a' 
d = dict((k, maybeint(v)) for k, v in [x.split("=") for x in s.split(",")])