【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]總結
以上是生活随笔為你收集整理的【Python CheckiO 题解】Sort Array by Element Frequency的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么办信用卡都审核不通过 信用卡为什么
- 下一篇: 招行信用卡优惠活动 账单分期五月好礼