从字符串创建字典
我有一个这样的字符串:
s = 'A - 13, B - 14, C - 29, M - 99'
这个字符串的长度不固定。请问有什么简单的方法可以把它变成一个字典吗?
A: 13, B: 14, C: 29 ...
我知道可以用分割的方法,但我不知道具体该怎么写。如果我用-
来分割,那我该怎么把分开的两部分再合起来呢?
一个一个地处理这些感觉太麻烦了。
9 个回答
14
如果你遇到以下问题:
想把字符串 a = '{"a":1,"b":2}'
转换成字典对象。
你可以简单地使用 a = eval(a)
这样就能把字符串 a
变成字典对象。
27
要解决你的例子,可以这样做:
mydict = dict((k.strip(), v.strip()) for k,v in
(item.split('-') for item in s.split(',')))
这个方法做了三件事:
- 把字符串分成
"<key> - <value>"
这样的部分:s.split(',')
- 把每一部分再分成
"<key> "
和" <value>"
这样的对:item.split('-')
- 去掉每一对中的空格:
(k.strip(), v.strip())
17
>>> s = 'A - 13, B - 14, C - 29, M - 99'
>>> dict(e.split(' - ') for e in s.split(','))
{'A': '13', 'C': '29', 'B': '14', 'M': '99'}
补充说明:接下来的解决方案是针对你想要整数值的情况,我觉得这正是你想要的。
>>> dict((k, int(v)) for k, v in (e.split(' - ') for e in s.split(',')))
{'A': 13, ' B': 14, ' M': 99, ' C': 29}