日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python CheckiO 题解】Sort Array by Element Frequency

發布時間:2023/12/10 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。