关于Python3 中['{}']这样的数据类型如何得到字典

获取到一个数据结构为['{"key":value}'] 这样的类型,通过for循环拿到了'{"key":value}',请问怎么可以去掉str,拿到里面的字典

另外一个,json模块了解一下。

楼上有推荐使用eval的,虽然可行,但是有2个问题。一是效率低二是不安全。

"拿到里面的字典" ?   字典?

string split 请了解一下 (7条消息) Python split()笔记(分割字符串)_Mr_Bobcp的博客-CSDN博客_python split提取

split 分割完又恢复了原样

eval() 了解一下

用ast库中的literal_eval()函数,例:

a=['{"a":1}','{"b":2}','{"c":"ok"}']

x=[]

for item in a:

    x.append(literal_eval(item))#literal_eval(item)为字典型

    print(type(literal_eval(item)))

print(x)

使用eval 函数, 它可将传入的字符串当做Python语句执行一下, 当然也不能有语法错误

放在你这的应用就是从列表中取出字符串 '{"key":value}', 然后放入eval函数中就能转变成字典了

res = eval(['{"key":"value"}'][0])
print(res)        # {'key': 'value'}
print(type(res))  # <class 'dict'>

 

字符串split方法和字符串截取配合着用就行了,这个很简单,多练习就行!


table = [
    '{"key1":value1}',
    '{"key2":value2}',
    '{"key3":value3}',
    '{"key4":value4}',
    '{"key5":value5}',
]

def list_to_dict(li):
    dic = {}
    for i in li:
        a = i.split(':',1)
        dic[a[0][2:-1]]=a[1][0:-1:1]
    return dic

print(list_to_dict(table))