【问题标题】:Assignment of dictionary in for-loopfor循环中字典的赋值
【发布时间】:2021-12-17 16:19:50
【问题描述】:

我想创建一个包含 30 个外星人的列表。它们具有不同的特征,而一本字典包含这些特征。

aliens = []

for num in range(30):
    alien_new = {"color": "green", "points": "5", "speed": "low"}
    aliens.append(alien_new)

for alien in aliens[:10]:
    if alien["color"] == "green":
        alien = {"color": "yellow", "points": "10", "speed": "medium"}
for alien in aliens[:5]:
    if alien["color"] == "yellow":
        alien = {"color": "red", "points": "15", "speed": "fast"}
aliens = []

for num in range(30):
    alien_new = {"color": "green", "points": "5", "speed": "low"}
    aliens.append(alien_new)

for alien in aliens[:10]:
    if alien["color"] == "green":
        alien["color"] = "yellow"
        alien["points"] = "10"
        alien["speed"] = "medium"
for alien in aliens[:5]:
    if alien["color"] == "yellow":
        alien["color"] = "red"
        alien["points"] = "15"
        alien["speed"] = "fast"

我不知道为什么会有两个不同的答案。

【问题讨论】:

  • 问题是什么?
  • 你知道a = {'b': 'c'}a['b'] = 'c'的区别吗?
  • 我写了第一个,第二个在我的书里

标签: python dictionary for-loop


【解决方案1】:

aliens 是一个包含 30 个字典的列表。

在 for 循环 (for alien in aliens[:10]:) 中,alien 是一个“指向”其中一个字典的变量。

当您执行alien["color"] = "yellow" 时,您会更改此词典的其中一个字段。

而当您执行alien = {"color": "yellow", "points": "10", "speed": "medium"} 时,您使alien 变量指向一个包含黄色的新字典,但您不会更改aliens 数组或其内容。
您只需更改局部循环变量的值。

【讨论】:

  • 我已经反复阅读您的回答,现在我知道为什么了。非常感谢!
  • 如果对您有帮助,请将我的回答标记为已接受。谢谢。
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
相关资源
最近更新 更多