访问嵌套在dicts中的列表中的对象。蟒蛇

时间:2014-03-08 23:17:59

标签: python list

我有一个来自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

2 个答案:

答案 0 :(得分:4)

这是一个嵌套结构。您需要根据该层的类型引用每个层,以dicts的形式访问dicts并将列表作为列表进行访问。例如,如果您在上面显示的整体字典被称为x,则id元素将被访问为:

x['peaks'][0]['scan'][0]['id']

最容易理解&通过钻取图层来调试这样的结构 - 首先查看x['peaks'],然后一旦了解向下移动到x['peaks'][0],依此类推。

答案 1 :(得分:3)

['peak']只有一个值,而不是写一个循环,只需写下:

print data['peaks']

您可以在数据['peak']上运行循环。