在python中迭代包含数组对象的字典

时间:2012-11-03 07:25:56

标签: python dictionary python-2.7

所以我试图在python中迭代一个字典对象,而我所得到的只是索引错误的列表。这是我的列表 -

test_list = {"1":[{"1":[{"a":"100","b":"200"}],"2":[{"a":"300","b":"400"}]}]}

这是代码 -

for counter in range(len(test_list)):
            print test_list['1'][counter]

我知道为什么会收到这个错误?

编辑:我想访问所有的& test_list中的b个元素

5 个答案:

答案 0 :(得分:1)

您的代码不会为我引发错误。如果你想要第一个a和b元素,你需要:

for key, val in test_list['1'][0]['1'][0].items():
    print key, val

毋庸置疑,这是相当复杂的。你所拥有的是字典中列表中字典中的字典。你为什么使用这种数据结构?几乎可以肯定有一种更简单的方式来表示您的数据。

答案 1 :(得分:1)

for k,v in test_list.items():
    print v[0]['1']

好的,也许这有帮助:

for c in test_list:
    for v in test_list[c]:
            print v['1']
            print v['2']

答案 2 :(得分:1)

    python 3.2

    t = {"1":[{"1":[{"a":"100","b":"200"}],"2":[{"a":"300","b":"400"}]}]}
    res=[v["a"] for x in t.values() for p in x for y in p.values() for v in y] # values for a

答案 3 :(得分:1)

列表中嵌套的dicts,非常棒。

我执行了以下操作,可以对其进行修改以访问所需的项目。

In [21]: inside_dict = test_list['1'][0]

In [22]: for key,val in inside_dict.items():
    print '{} contains'.format(key)
    for key2, val2 in val[0].items():
        print '\t{}: {}'.format(key2, val2)
Out[22]:
1 contains
        a: 100
        b: 200
2 contains
        a: 300
        b: 400

答案 4 :(得分:0)

所以这是答案

for key, val in test_list['1'][0].items():
    print key, val[0]['a']
    print key, val[0]['b']