使用列表和子字典迭代 Python 字典时出现问题

问题描述 投票:0回答:1

我有一个从文件中读取的数据结构,如下所示 -

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/

python dictionary parsing
1个回答
0
投票

我不确定这是否是最好的方法,但您可以使用

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

© www.soinside.com 2019 - 2024. All rights reserved.