0

各キーが辞書のリストを保持する辞書があります。

次のようになります。

my_dict = {"op1": varient_dict[0], varient_dict[1], varient_dict[2]..., "op2": varient_dict[0]...}
where varient_dict = {"length":0, "color":0...}

ネストされた辞書の値をループして最大値を見つけたい (次に、2 番目の辞書に格納する)

これまでのところ、私は試しました:

for  key in mydict:
    for varient_dict in key:
        if varient_dict["length"] > stats_dict[key]["max length"]:
            varient_dict["max length"] = stats_dict[key]["length"]

エラーが発生します:

TypeError: string indices must be integers

辞書でネストされた値を間違って呼び出していると思いますか? または、リストを正しく反復処理していませんか? これを行うより良い方法はありますか?(超初心者なので見づらかったらすいません)

ありがとうございました。

4

3 に答える 3

1

for varient_dict in key:の個々の文字を反復処理しkeyます。あなたはおそらくやりたいですfor varient_dict in mydict[key]

次のように使用することもできます.items()

for key, varient_dict in mydict.items():
    if varient_dict["length"] > stats_dict[key]["max length"]:
        varient_dict["max length"] = stats_dict[key]["length"]
于 2013-07-28T09:40:06.687 に答える
1

値ではなくキーをループしています:

for  key in mydict:
    for varient_dict in key:

代わりに値をループします。

for  key in mydict:
    for varient_dict in mydict[key]:

.iteritems()または結果をループします。

for key, value in mydict.iteritems():
    for varient_dict in value:

代わりに、コードは各キーの個々の文字をループするためvarient_dict["length"]、文字列にインデックスを付けます。

于 2013-07-28T09:40:24.863 に答える
0

この行は間違っています:

for varient_dict in key:

代わりに、次のようにします。

for varient_dict in mydict[key]:

あなたのバージョンでは、mydict明らかにやりたくないキーの単一の文字を反復処理します。それがエラーの原因です。

于 2013-07-28T09:40:13.470 に答える