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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将List的String表示形式转换为Dictionary Python相关的知识,希望对你有一定的参考价值。

如何将list的str表示(如下面的字符串)转换为dictionary

a = '[100:0.345,123:0.34,145:0.86]'

预期产量:

{100:0.345,123:0.34,145:0.86}

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

答案

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

ast.literal_eval(a.replace("[","{").replace("]", "}"))

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

{x.split(":")[0]: x.split(":")[1] for x in a[1:-1].split(",")}

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

ast.literal_eval("{" + a[1:-1] +"}")
另一答案

我只想试试

eval(a.replace('[', '{').replace(']', '}'))
另一答案

要转换为字典:

Code:

data = '[100:0.345,123:0.34,145:0.86]'

new_data = dict(y.split(':') for y in (x.strip().strip('[').strip(']')
                                       for x in data.split(',')))

print(new_data)

或者如果您需要数字而不是字符串:

new_data = dict((map(float, y.split(':'))) for y in (
    x.strip().strip('[').strip(']') for x in data.split(',')))

Results:

{'100': '0.345', '123': '0.34', '145': '0.86'}

{145.0: 0.86, 123.0: 0.34, 100.0: 0.345}
另一答案

将括号翻译为大括号,literal_eval

rebracket = {91: 123, 93: 125}
a = '[100:0.345,123:0.34,145:0.86]'
literal_eval(a.translate(rebracket))
另一答案

a ='[100:0.345,123:0.34,145:0.86]' a = a [1:-1] .split(“,”) d1 = [x.split(“:”)for x in a] d2 = {int(k [0]):浮点数(k [1])表示d1中的k}

以上是关于将List的String表示形式转换为Dictionary Python的主要内容,如果未能解决你的问题,请参考以下文章

如何将列表的字符串表示形式转换为列表?

如何将列表的字符串表示形式转换为列表?

将分类变量从 String 转换为 int 表示

怎样将JAVA中得list集合转换为javascript的二维数组?

android开发中如何讲一个list数组转换成String字符串的形式

List 集合转换为String