有一个包含以下内容的计数器:
Counter({'Все везде и сразу': 4, 'На Западном фронте без перемен': 2, 'Топ Ган: Мэверик': 2, 'Аватар: Путь воды': 1})
你需要得到这个:
Все везде и сразу, 4
Аватар: Путь воды, 1
我通过通向工作表的第一个和最后一个索引来完成此操作,但我想知道如何使用排序()来完成此操作。
谢谢你!
有一个包含以下内容的计数器:
Counter({'Все везде и сразу': 4, 'На Западном фронте без перемен': 2, 'Топ Ган: Мэверик': 2, 'Аватар: Путь воды': 1})
你需要得到这个:
Все везде и сразу, 4
Аватар: Путь воды, 1
我通过通向工作表的第一个和最后一个索引来完成此操作,但我想知道如何使用排序()来完成此操作。
谢谢你!
sorted不需要。c.items()返回(key, value)对,从对中key=lambda i: i[1]选择值min,并max根据值选择“最小值”和“最大值”对。对于最大值有一种特殊的方法
collections.Counter.most_common。PS
c.most_common()[-1]将带回最不受欢迎的电影。但是most_common不带参数的调用会导致排序,最好避免这种情况(时间和内存都不是免费的)。PPS如果有不止一部最受欢迎的电影会怎样?当前的解决方案将返回 1。但我们应该返回所有最受欢迎的:
为此,您只需要不按字典中的键排序,而是按值排序。为此,函数中
sorted()有一个参数key。首先,我们将字典转换为由元组组成的列表
("key", "value")。然后,通过 lambda 函数,我们选择排序依据,即元组的最后一个元素:因此,具有最大值的对将位于列表中的第一个,最小的对将位于列表的末尾
然后我们得到:
几个微妙的点:
一个更有效的选择,尽管并不理想。还有一个更快的选择,但它有点麻烦并且需要编写一个函数。