有人可以解释为什么这两个不同的代码示例给出不同的输出?我对第一个样本为何会在所有月份附加“阳光”和“云朵”感到困惑,这不是我想要的。我想要第二个样本的输出。但是,我想将变量“forecast”分配给weatherReport [“months”] [month],而不是其值。有没有办法以这种方式获得Sample 2的输出?Python:将变量名称与变量值分配到字典值
样品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
输出为样品1:
{'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:
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
输出为样品2:
{'months': {'February': [], 'October': [], 'March': [], 'August': [], 'May': [], 'December': ['cloudy'], 'June': ['sunny'], 'September': [], 'April': [], 'July': [], 'November': []}}
我明白了。有没有其他方式获得与第二代码相同的解决方案,还是唯一的方法? – user3226932
@ user3226932列表复制:预测[:]并且您没有参考,但是有副本。 – palsch