【Python CheckiO 题解】Sort Array by Element Frequency


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Sort Array by Element Frequency】:对给定的可迭代对象,按照它们在列表中出现的次数进行排序,如果两个元素出现的次数相同,则按照元素在原来列表出现的先后顺序进行排序。

【链接】:https://py.checkio.org/mission/sort-array-by-element-frequency/

【输入】:可迭代的列表

【输出】:排序后的列表

【前提】:元素可以是 int 或 string 类型

【范例】

frequency_sort([4, 6, 2, 2, 6, 4, 4, 4]) == [4, 4, 4, 4, 6, 6, 2, 2]
frequency_sort(['bob', 'bob', 'carl', 'alex', 'bob']) == ['bob', 'bob', 'bob', 'carl', 'alex']

解题思路

利用 collections 模块的 Counter() 方法,统计元素的出现次数,将元素作为 key,出现次数作为 value,以字典的键值对形式存储,调用 most_common() 方法将其按照出现次数进行排序

排序过后是一个列表,列表内元素为元组的形式,遍历该列表,将元素乘以其出现的次数,依次添加到一个新的列表当中,这个新列表就是排序过后的列表

代码实现

from collections import Counterdef frequency_sort(items):items2 = []items = Counter(items).most_common()for i in items:items2.extend([i[0]] * i[1])return items2if __name__ == '__main__':print("Example:")print(frequency_sort([4, 6, 2, 2, 6, 4, 4, 4]))# These "asserts" are used for self-checking and not for an auto-testingassert list(frequency_sort([4, 6, 2, 2, 6, 4, 4, 4])) == [4, 4, 4, 4, 6, 6, 2, 2]assert list(frequency_sort(['bob', 'bob', 'carl', 'alex', 'bob'])) == ['bob', 'bob', 'bob', 'carl', 'alex']assert list(frequency_sort([17, 99, 42])) == [17, 99, 42]assert list(frequency_sort([])) == []assert list(frequency_sort([1])) == [1]print("Coding complete? Click 'Check' to earn cool rewards!")

大神解答

大神解答 NO.1

def frequency_sort(items):return sorted(items, key=lambda x: (-items.count(x), items.index(x)))

大神解答 NO.2

from collections import Counter
from itertools import repeatdef frequency_sort(items):return [x for y in (repeat(*x) for x in Counter(items).most_common()) for x in y]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SharePoint学习札记[3] — Office SharePoint Server 2007部署

MOSS的第一步就是部署啦!《0ffice SharePoint Server 2007部署图示指南》图文并茂的展示了OSS2007的部署过程。虽然并不难,但对MOSS还摸不清方向的人来说是个不错的指导。手册的作者没有署名,也查不到出自谁手,在这里对他的劳动成果表示感谢…

【Python CheckiO 题解】Flatten a List

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

SharePoint学习札记[4] — 创建SharePoint站点

为减少创建SharePoint站点过程中的麻烦,先打开IIS管理器,将“默认站点”停止或删除。后面的创建过程中,创建向导会自动创建端口为80的网站。 现在将: 1. 创建两个Web应用程序。 2. 创建共享服务。 3. 创建…

【Python CheckiO 题解】Long Repeat

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

SharePoint学习札记[5] — 设置匿名访问

设置网站的匿名访问一般有三种情况: 1. 创建Web应用程序时进行匿名访问设置。 2. 对已建立的网站进行匿名访问设置。 3. 对同一个网站分别设置验证访问和匿名访问。创建Web应用程序时进行匿名访问设置 新建Web应用程序时在“安全性配置”的“允许匿名访问”选…

【Python CheckiO 题解】Sun Angle

CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 Chec…

解决text-overflow: ellipsis;不生效的问题

按照text-overflow: ellipsis;使用规则&#xff0c;在标签样式中添加该属性未生效&#xff0c;例如&#xff1a; 写道 .text { text-overflow: ellipsis; } <div class"text">长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字…

【Python CheckiO 题解】Bird Language

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

Python CheckiO 题解系列 丨 博客目录索引

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本题解系列主要记录自己在用 Python 闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 …

文带你深入了解 Redis 内存模型

前言 Redis是目前最火爆的内存数据库之一&#xff0c;通过在内存中读写数据&#xff0c;大大提高了读写速度&#xff0c;可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时&#xff0c;会接触Redis的5种对象类型&#xff08;字符串、哈希、列表、集合、有序集合…

【Python CheckiO 题解】Pawn Brotherhood

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Xs and Os Referee

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

c#多线程总结(纯干货)

线程基础 创建线程 static void Main(string[] args) {Thread t new Thread(PrintNumbers);t.Start();//线程开始执行PrintNumbers();Console.ReadKey(); }static void PrintNumbers() {Console.WriteLine("Starting...");for (int i 1; i < 10; i){Console.Wr…

Hexo 博客优化之实用功能添加系列(持续更新)

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 本文将讲述一些 Hexo 博客实用功能的添加&#xff0c;本文以作者 luuman 的 spfk 主题和作者 xaoxuu 的 Material X…

SharePoint关于publish page, WiKi page, Web part page区别

并非所有页面类型都相似 让我们来重新理解一下关于这三种页面的问题&#xff0c;自己找了很多文章并没有找到很好的介绍。 尽可能简单&#xff0c;SharePoint页面是您的用户内容显示的地方。您可以将其比喻成SharePoint站点的“脸和身体”。因此&#xff0c;当你访问SharePoi…

【Python CheckiO 题解】The Warriors

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Multiply (Intro)

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SQL Server定时执行SQL语句

企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)&…

关于DateTime的一点记录 ToString(yyyy-MM-dd HH:mm:ss)

DateTime dt DateTime.Now; string z dt.ToString("yyyy-MM-dd HH:mm:ss");//你知道这个是“年月日时分秒”的格式吧? string a dt.ToString("yyyy-MM-dd HH:mm:ss ms");//这个你认为一定是 毫秒的格式? string b dt.ToString("yyyy-MM-dd HH:…

【Python CheckiO 题解】Say Hi

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…