将字符串转换为python字典
我想使用pairSeparator和keyValueSeparator将字符串转换为字典。 我将如何定义这一点:将字符串转换为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
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的字符串表示形式。非常感谢:我也在做同样的事情,但最后一句我错了!非常感谢您的帮助: