从字符串创建字典

use*_*312 11 python string dictionary

我有一个字符串形式:

s = 'A - 13, B - 14, C - 29, M - 99'
Run Code Online (Sandbox Code Playgroud)

等等(长度不一样).从中创建字典的最简单方法是什么?

A: 13, B: 14, C: 29 ...
Run Code Online (Sandbox Code Playgroud)

我知道我可以拆分,但我无法得到正确的语法如何做到这一点.如果我分手了-,那我该如何加入这两个部分呢?

对此进行迭代似乎很痛苦.

Joc*_*zel 23

要解决您的示例,您可以执行以下操作:

mydict = dict((k.strip(), v.strip()) for k,v in 
              (item.split('-') for item in s.split(',')))
Run Code Online (Sandbox Code Playgroud)

它做了三件事:

  • 将字符串拆分为多个"<key> - <value>"部分:s.split(',')
  • 将每个部分分成"<key> ", " <value>"两组:item.split('-')
  • 从每对中删除空格: (k.strip(), v.strip())


use*_*312 14

>>> 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'}
Run Code Online (Sandbox Code Playgroud)

编辑:下一个解决方案是当你想要值为整数时,我认为这是你想要的.

>>> dict((k, int(v)) for k, v in (e.split(' - ') for e in s.split(',')))
{'A': 13, ' B': 14, ' M': 99, ' C': 29}
Run Code Online (Sandbox Code Playgroud)


kri*_*hna 10

那些带着以下问题来到这里的人:

将字符串转换a = '{"a":1,"b":2}'为字典对象。

您可以简单地使用从字符串对象中a = eval(a)获取a字典对象。


phi*_*hag 5

>>> dict((k.strip(),int(v.strip())) for k,v in (p.split('-') for p in s.split(',')))
{'A': 13, 'B': 14, 'M': 99, 'C': 29}
Run Code Online (Sandbox Code Playgroud)