首页 > 解决方案 > 从字典创建列表

问题描述

我正在尝试自学python,所以如果问题本身没有多大意义,我深表歉意。

我正在做我正在参加的 Python 在线入门课程的示例,提示是编写代码以读取文件并查找所有电子邮件,然后将它们添加到字典中,然后打印出发送最多的人电子邮件和他们发送的号码。我的问题是提示特别要求通过以相反顺序对列表进行排序来完成此操作。

我设法通过解析名称,然后计算每次弹出的名称,然后找到最大值并在 for 循环中使用相应的键打印出来,就得到了相同的最终结果。但是我不确定这是否是我应该做的,或者这本书是否要求别的东西。字典本身算作列表吗?

for k,v in di.items():
   if largest_so_far ==-1
      largest_so_far = v
   elif v > largest_so_far :
      largest_so_far = v
      the_word = k

print(the_word,largest_so_far)

这是我用来打印姓名电子邮件的人的代码。我试着改变

for k,v in di.items():

进入

for k,v in reversed(di.items()):

为了尝试并至少以相反的顺序打印出来,但代码运行正常,没有任何更改或问题。

再次,如果这没有多大意义,我深表歉意。我几乎完全是自学成才(只能观看预先录制的视频和阅读教科书),并且仍在努力获得对这种语言的基本理解。

标签: python

解决方案


所写的循环将始终以字典for中最大的任何内容结束。v因此,reversed(...)它只会更改检查字典所有元素的顺序,但通常不会更改您在 print() 语句中看到的内容。

将语句放在for循环中可能有助于您的调试,例如,print(word, largest_so_far)在块之后立即elif缩进并缩进与elif.

(我假设您largest_so_far = -1在循环之前有一个语句for。考虑将其更改为largest_so_far = None然后if not largest_so_far:在 for 循环中使用。)


推荐阅读