Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中将特殊字符串映射到dict?_Python_String_Dictionary - Fatal编程技术网

如何在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