所以我试图在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个元素答案 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']