我有一个来自yaml文件的dicts列表。每个dict都有嵌套的dicts列表,我可以阅读如下:
import yaml
stream = open('KK_20130701_003_19844.yaml','r')
data = []
data.append(yaml.load(stream))
for rows in data:
print rows['peaks']
{'peaks':
[{'intensity': [1217.956975, 1649.030477, 7081.000197,... 15225.865077, 15230.394569, 20125.554444],
'z': [1, 1, 1, ... 24, 24, 24],
'scans': [{'z': 0.0, 'id': 19844, 'mz': 0.0}]}],
'scan': [{'z': 0.0, 'id': 19844, 'mz': 0.0}]
}
我不确定嵌套列表中的每个元素和列表中嵌套的dicts的最佳方法是什么。如果我尝试将它们作为dicts读取,我会得到以下类型错误: TypeError:list indices必须是整数,而不是str
答案 0 :(得分:4)
这是一个嵌套结构。您需要根据该层的类型引用每个层,以dicts的形式访问dicts并将列表作为列表进行访问。例如,如果您在上面显示的整体字典被称为x
,则id
元素将被访问为:
x['peaks'][0]['scan'][0]['id']
最容易理解&通过钻取图层来调试这样的结构 - 首先查看x['peaks']
,然后一旦了解向下移动到x['peaks'][0]
,依此类推。
答案 1 :(得分:3)
['peak']只有一个值,而不是写一个循环,只需写下:
print data['peaks']
您可以在数据['peak']上运行循环。