将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的主要内容,如果未能解决你的问题,请参考以下文章
怎样将JAVA中得list集合转换为javascript的二维数组?