遍历含列表与子字典的Python字典时遇到的问题
问题原因与解决办法
你的问题出在数据结构本身:data["test"]是一个仅包含单个元素的列表,而这个元素是JSON格式的字符串,并非已经解析好的Python字典列表。所以当你调用value1[0]时,实际是在取这个字符串的第一个字符(也就是[),而非列表中的第一个字典对象。
验证方法
你可以打印type(value1),结果会是<class 'str'>,直接证明它是字符串类型,不是可直接索引的列表。
解决步骤
使用Python内置的json模块,将这个JSON字符串解析成可直接操作的Python数据结构:
import json data = {"test":['[{"Day":"Monday","Device":"Android","Data":[1, 2, 3]}, {"Day":"Tuesday","Device":"Iphone","Data":[10, 20, 30]}]']} value = data["test"] # 把JSON字符串解析为Python列表 parsed_data = json.loads(value[0]) # 现在可以正常访问第一个字典 print(parsed_data[0]) # 输出: {'Day': 'Monday', 'Device': 'Android', 'Data': [1, 2, 3]} # 还能进一步访问字典内的元素 print(parsed_data[0]["Day"]) # 输出: Monday
额外建议
如果是从文件读取时出现这种情况,说明你读取的是原始JSON文本但未做解析。后续读取文件时,直接用json.load()(读取文件对象)或json.loads()(读取字符串内容)处理,就能得到可直接操作的Python对象,无需手动拆分字符串。
内容的提问来源于stack exchange,提问作者Nitron_707
相关产品推荐
相关产品推荐

