我想使用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}
答案 0 :(得分:1)
只需使用拆分即可轻松解决。您可能想要添加一些错误检查,但基本上做这样的事情:
def stringToDictionary(s, pairSeparator, keyValueSeparator):
pairs = s.split(pairSeparator)
return dict(pair.split(keyValueSeparator) for pair in pairs)
我注意到在您的预期输出中,您将值转换为整数。为了保持这个功能的通用性,我建议允许将转换器函数传递给stringToDictionary,或者只是为了之后转换值。
答案 1 :(得分:0)
使用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", ',', ':')
编辑:这是一个像你问的功能。
答案 2 :(得分:0)
可以为自定义函数构建相同的逻辑,
>>> 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'}
>>>