如何按发生频率和按字母顺序(在平局的情况下)组织列表,同时消除重复?

use*_*683 8 python frequency

基本上如果给出一个列表:

data = ["apple", "pear", "cherry", "apple", "pear", "apple", "banana"]
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个返回如下列表的函数:

["apple", "pear", "banana", "cherry"]
Run Code Online (Sandbox Code Playgroud)

我试图通过最常出现的单词排序返回列表,同时通过按字母顺序排序来断开连接.我也试图消除重复.

我已经列出了每个元素的计数和数据中每个元素的索引.

x = [n.count() for n in data]
z = [n.index() for n in data]
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始.

Ble*_*der 16

你可以这样做:

from collections import Counter

data = ["apple", "pear", "cherry", "apple", "pear", "apple", "banana"]

counts = Counter(data)
words = sorted(counts, key=lambda word: (-counts[word], word))

print words
Run Code Online (Sandbox Code Playgroud)