これら2つの異なるコードサンプルが異なる出力を与える理由を誰かが説明できますか?私はなぜ最初のサンプルがすべての月に「晴れ」と「雲」を追加するのか混乱しています。これは私が望むものではありません。 2番目のサンプルの出力が必要です。しかし、weatherReport ["months"] [month]にその値ではなく、変数 "forecast"を割り当てたいと思います。このようにサンプル2の出力を得る方法はありますか?Python:変数名と変数値をディクショナリ値に代入
サンプル1:サンプル1
weatherReport = {"months": {}}
forecast = []
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
for month in months[1:]:
weatherReport["months"][month] = forecast
weatherReport["months"]["June"].append("sunny")
weatherReport["months"]["December"].append("cloudy")
print weatherReport
出力:
{'months': {'February': ['sunny', 'cloudy'], 'October': ['sunny', 'cloudy'], 'March': ['sunny', 'cloudy'], 'August': ['sunny', 'cloudy'], 'May': ['sunny', 'cloudy'], 'December': ['sunny', 'cloudy'], 'June': ['sunny', 'cloudy'], 'September': ['sunny', 'cloudy'], 'April': ['sunny', 'cloudy'], 'July': ['sunny', 'cloudy'], 'November': ['sunny', 'cloudy']}}
サンプル2:サンプル2
weatherReport = {"months": {}}
forecast = []
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
for month in months[1:]:
weatherReport["months"][month] = []
weatherReport["months"]["June"].append("sunny")
weatherReport["months"]["December"].append("cloudy")
print weatherReport
出力:
{'months': {'February': [], 'October': [], 'March': [], 'August': [], 'May': [], 'December': ['cloudy'], 'June': ['sunny'], 'September': [], 'April': [], 'July': [], 'November': []}}
です。 2番目のコードと同じ解決策を得る他の方法はありますか、それとも唯一の方法ですか? – user3226932
@ user3226932リストのコピー:forecast [:]と参照がなく、コピーがありません。 – palsch