我有一个从文件中读取的数据结构,如下所示 -
data = {"test":['[{"Day":"Monday","Device":"Android","Data":[1, 2, 3]}, {"Day":"Tuesday","Device":"Iphone","Data":[10, 20, 30]}]']}
我正在尝试访问如下结构的元素,一一剥落 -
value = data["test"]
print(value)
#['[{"Day":"Monday","Device":"Android","Data":[1, 2, 3]}, {"Day":"Tuesday","Device":"Iphone","Data":[10, 20, 30]}]']
value1 = value[0]
print(value1)
#[{"Day":"Monday","Device":"Android","Data":[1, 2, 3]}, {"Day":"Tuesday","Device":"Iphone","Data":[10, 20, 30]}]
print(value1[0])
#I get only [ as if it is a string
传入的结构是否有问题,或者我访问的方式错误。
这是重现的链接 - https://godbolt.org/
我不确定这是否是最好的方法,但您可以使用
literal_eval
将该字符串转换为 Python 对象(特别是字典,如您所料),如下所示:
from ast import literal_eval
data = {"test":['[{"Day":"Monday","Device":"Android","Data":[1, 2, 3]}, {"Day":"Tuesday","Device":"Iphone","Data":[10, 20, 30]}]']}
for item in literal_eval(data['test'][0]):
print(item, type(item))
# >>> {'Day': 'Monday', 'Device': 'Android', 'Data': [1, 2, 3]} <class 'dict'>
# >>> {'Day': 'Tuesday', 'Device': 'Iphone', 'Data': [10, 20, 30]} <class 'dict'>
注意:打印
type(item)
只是为了证明它们正在适当地转换为 dict