3

これが私がPythonでやろうとしていることの抽象的なコードです。

list_ = []
dict_ = {}
for i in range(something):
    get_values_into_dict(dict_)
    list_.append(dict_)
    dict_.clear()
print list_

ここで dict_ をクリアすると、変数 dict_ にアドレスがマップされているだけなので、明らかに list_ 内のすべての要素が削除されます。

私が欲しいのは、dict_ のインスタンスをコピーして、list_ に格納できるようにすることです。

取得した dict をすべてのループで list_ に格納する方法を誰かが説明してくれますか? 前もって感謝します。

4

1 に答える 1

4

辞書への参照をリストに追加してから、辞書自体をクリアします。これにより辞書の内容が削除されるため、その辞書へのすべての参照は、辞書が空になったことを示します。

同じ辞書を指す2つの変数を作成することと比較してください。

>>> a = {'foo': 'bar'}
>>> b = a
>>> b
{'foo': 'bar'}
>>> a.clear()
>>> b
{}

辞書は変更可能です。オブジェクト自体を変更します。

辞書をクリアして再利用する代わりに、ループ内に新しい辞書を作成します。

list_ = []
for i in range(something):
    dict_ = {}
    get_values_into_dict(dict_)
    list_.append(dict_)
print list_

またはさらに良いことに、代わりに辞書をget_values_into_dict() 返します。

list_ = []
for i in range(something):
    dict_ = return_values_as_dict()
    list_.append(dict_)
print list_
于 2013-01-28T09:52:16.663 に答える