0

所以我试图在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 中的所有 a & b 元素

4

5 回答 5

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
于 2012-11-03T15:36:48.923 回答
1

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

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

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

于 2012-11-03T07:32:50.167 回答
1

列表中的嵌套字典,太棒了。

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

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
于 2012-11-03T15:52:37.387 回答
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']
于 2012-11-03T07:40:20.490 回答
0

所以这里是答案

for key, val in test_list['1'][0].items():
    print key, val[0]['a']
    print key, val[0]['b']
于 2012-11-03T08:05:51.427 回答