【问题标题】:Loop looping through last value in dictionary key instead of all values in dictionary循环遍历字典键中的最后一个值而不是字典中的所有值
【发布时间】:2020-08-31 23:15:33
【问题描述】:

我对编程很陌生。

我正在通过一本书“Python Crash Course: A hands-on, project-based Introduction to Programming”学习

我正在编写一个代码,其中涉及制作一个字典,然后循环一个关于字典中项目的句子,然后创建一个只打印字典中每个键的值的循环。

我完成了第一部分,但是在编写第二个循环时,它只是返回字典中最后一个键的值并将其循环多次,而不是循环键中的各个值。谁能告诉我我做错了什么?

代码如下:

rivers = {'nile': 'egypt', 'amazon': 'south america',
    'mississipi': 'us', 'yangtze': 'china',
    'ganges': 'india',}
for river, rivers in rivers.items():
        print(f"The {river.title()} is in {rivers.title()}")
for river in rivers:
print(rivers)

【问题讨论】:

  • 您在第一个 for 循环中覆盖了 rivers 的定义:for river, rivers in rivers.items():。在 for 循环中使用不同的变量名,例如 country
  • 对于for 循环的每次迭代,变量riverrivers 都会被rivers.items()开始 处的下一个值覆盖循环。一旦循环结束,它们就不会被清除,因此当您稍后尝试打印 for river in rivers 时,循环设置它的最后一个值就是您得到的值。当两个变量靠近时,请注意不要将它们命名为相同的名称。

标签: python python-3.x dictionary


【解决方案1】:

您正在将整个字典中的名称 rivers 重新绑定到每次迭代中的单个值。第一个循环完成后,rivers 将指向字典中最后访问的值。

您应该为其中一个引用使用不同的名称。迭代期间每个值的country 怎么样?

rivers = {'nile': 'egypt', 'amazon': 'south america',
    'mississipi': 'us', 'yangtze': 'china',
    'ganges': 'india',}
for river, country in rivers.items():
    print(f"The {river.title()} is in {country.title()}")
for river in rivers:
    print(rivers)

但是,我仍然不确定第二个循环的目的是什么。如果您想单独打印键值对,可以通过第一个循环来完成。

for river, country in rivers.items():
    ...
    print(river, country)

【讨论】:

  • 非常感谢!我会注意我如何命名我的物品,这是有道理的,再次感谢您!冗余只是一些琐碎的练习,因为我正在讨论的章节是关于字典和循环的,所以它可以帮助我掌握编写代码和学习语法的窍门。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 2023-02-10
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多