如何在python中将特殊字符串映射到dict?
我有一个字符串,比如:如何在python中将特殊字符串映射到dict?,python,string,dictionary,Python,String,Dictionary,我有一个字符串,比如: 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. 您可以使用split() d_1 = dict(pair.split("=") for pair in
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.
您可以使用split()
d_1 = dict(pair.split("=") for pair in a_1.split(","))
您可以使用split()
d_1 = dict(pair.split("=") for pair in a_1.split(","))
强制到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}
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(",")])
更新:尝试将值强制为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}
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(",")])
强制到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}
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(",")])
更新:尝试将值强制为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}
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(",")])
+1实际上它“几乎完美”,因为你的地图创建了{'A':'1',…}
,他希望VAL是整数:{'A':1,…}
@alfasin,这很好,因为我的字符串中的一些值也是一个“字符串”。)@AvinashRaj你在说什么?它写得很优雅,效果很好@阿尔法辛:我认为这是因为OP中的逗号有两个不同的字符(如果仔细看a_1
)。我打赌阿维纳什刚刚做了一个复制粘贴,而split(“,”)不会在第二个逗号上拆分。@C.B.我不知道你在说什么:P+1实际上“几乎完美”,因为你的地图创建了{a':'1',…}
,他希望VAL是int:{a':1,…}
@alfasin,这很好,因为我字符串中的某些值也是一个“string”。:)@AvinashRaj你在说什么-它写得很优雅,工作也很好!@alfasin我相信这是因为OP有两个不同的字符作为逗号(如果你仔细看a_1
)。我打赌Avinash只是做了一个复制粘贴,然后拆分(“,”)不会在第二个逗号处分开。@C.B.我不知道你在说什么:P