从字符串创建字典

19 投票
9 回答
67097 浏览
提问于 2025-04-16 09:34

我有一个这样的字符串:

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}

撰写回答