将字符串转换为python字典

将字符串转换为python字典,python,dictionary,Python,Dictionary,我想使用pairSeparator和keyValueSeparator将字符串转换为字典。 我将如何定义这一点: def stringToDictionary(s, pairSeparator, keyValueSeparator): .... .... return D 我想要这个结果: s = 'potatoes:2.67,sugar:1.98,cereal:5.99,crisps:1.09' D = stringToDictionary(s, ',', ':') pri

我想使用pairSeparator和keyValueSeparator将字符串转换为字典。 我将如何定义这一点:

def stringToDictionary(s, pairSeparator, keyValueSeparator):

 ....
 ....

 return D
我想要这个结果:

s = 'potatoes:2.67,sugar:1.98,cereal:5.99,crisps:1.09'    
D = stringToDictionary(s, ',', ':')
print(D)
{'sugar': 1.98, 'cereal': 5.99, 'potatoes': 2.67, 'crisps': 1.09}
分裂 只需使用拆分就可以非常简单地解决问题。您可能希望添加一些错误检查,但基本上是这样做的:

def stringToDictionary(s, pairSeparator, keyValueSeparator):
    pairs = s.split(pairSeparator)
    return dict(pair.split(keyValueSeparator) for pair in pairs)
我注意到,在预期的输出中,您将值转换为整数。为了保持此函数的通用性,我建议允许将转换器函数传递到stringToDictionary,或者只是在之后转换值。

使用for循环。如果您的字符串严格遵循您提供的格式,则这是错误的

def stringToDictionary(s, pairSeparator, keyValueSeparator):
    items = s.split(pairSeparator)
    data = {}
    for item in items:
        keyvalpair = item.split(keyValueSeparator)
        data[keyvalpair[0].strip()] = float(keyvalpair[1]) # strip() removes unwanted trailing/leading spaces

    return data

print stringToDictionary("potatoes:2.67,sugar:1.98,cereal:5.99,crisps:1.09", ',', ':')

编辑:它已按照您的要求制作成一个函数。

您能否为自定义函数构建与

>>> s = 'potatoes:2.67,sugar:1.98,cereal:5.99,crisps:1.09'.split(",")
>>> d={}
>>> for i in s:
    d[i.split(':')[0]]=float(i.split(':')[1])


>>> d
{'potatoes': '2.67', 'crisps': '1.09', 'cereal': '5.99', 'sugar': '1.98'}
>>>

@xFortyFourx的副本,但这里的字符串不是dict的字符串表示形式。非常感谢:我也在做同样的事情,但最后一句我错了!非常感谢您的帮助: