将List的String表示形式转换为Dictionary Python

Bha*_*kar 3 python string dictionary list

如何将str的表示形式list转换为dictionary

a = '[100:0.345,123:0.34,145:0.86]'
Run Code Online (Sandbox Code Playgroud)

预期产量:

{100:0.345,123:0.34,145:0.86}
Run Code Online (Sandbox Code Playgroud)

首先尝试使用将字符串转换为列表ast.literal_eval.但它显示错误: invalid syntax

Sve*_*ris 8

它显示为无效语法,因为它有错误的括号,所以你可以这样做

ast.literal_eval(a.replace("[","{").replace("]", "}"))
Run Code Online (Sandbox Code Playgroud)

或者,也可以在字典理解中自己解析字符串

{x.split(":")[0]: x.split(":")[1] for x in a[1:-1].split(",")}
Run Code Online (Sandbox Code Playgroud)

如果提到你的字符串中有[]其他地方,以下可能更强大

ast.literal_eval("{" + a[1:-1] +"}")
Run Code Online (Sandbox Code Playgroud)

  • 如果在引用的字符串文字中有额外的`[`s或`]`,例如`'[100:"[",123:0.34,145:0.86]',这将不起作用. (2认同)
  • @blhsing看到编辑方法,在这种情况下应该更加健壮 (2认同)

Aem*_*myl 5

我只想试试

eval(a.replace('[', '{').replace(']', '}'))
Run Code Online (Sandbox Code Playgroud)