1

このトピックに関する回答のデータベースを調べましたが、回答が見つかりませんでした。基本的に、辞書をループしています。「辞書のサイズが変更されました」というランタイム エラーが発生していますが、キーが 1 つ飛び出しています。と値を挿入し、反復が再開する前に別の値を挿入します。

       for patterns in dict_copy.keys():
            new_tuple = ()
            for items in range(len(patterns)):
                if patters[items] not in exclusion:
                    new_tuple += (patterns[items],)
            dict_copy[new_tuple] = dict_copy.get(patterns)
            dict_copy.pop(patterns)

私が使用している辞書の形式は次のとおりです: {("A","B","C","D"):4, ("B","A","C","D") 「2...} 辞書のサイズを変更していると認識されているという事実に、私はほとんど混乱しています。

4

2 に答える 2

1

反復が再開する前に、1つのキーと値をポップアウトし、別のキーと値を挿入しています。

それは問題ではありません。反復中にデータ構造を変更することはできません。Pythonのイテレータは混乱します(-:辞書のサイズではなく、その内容です(他のプログラミング言語でも同じです...)

于 2012-11-27T21:44:04.097 に答える
1

エラーは少し誤解を招くものです。それがあなたに伝えようとしているのは、辞書を繰り返し処理している間、構造的な変更 (挿入/削除) を行うべきではないということです。

これを修正する簡単な方法は、結果を別の辞書に入れることです。

   new_dict = {}
   for patterns in dict_copy.keys():
        new_tuple = ()
        for items in range(len(patterns)):
            if patters[items] not in exclusion:
                new_tuple += (patterns[items],)
        new_dict[new_tuple] = dict_copy.get(patterns)
   dict_copy = new_dict
于 2012-11-27T21:41:38.897 に答える