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 に答える