在Python中按字母出现频率对列表进行排序(降序)

发布于 2024-12-13 04:17:00 字数 110 浏览 0 评论 0原文

就像标题所说,我需要编写一个函数,根据字母的频率对列表进行排序。通常我会提供我迄今为止所拥有的代码,但我不知道从哪里开始。我确信这很简单,但我只是不知道该怎么做。我需要将它们按降序排列,感谢任何帮助,谢谢。

Like the title says I need to write a function that will sort a list by frequency of letters. Normally I would supply my code with what I have so far but I have no idea where to get started. I'm sure its something simple but I just don't know what to do. I need them sorted in decreasing order, any help is appreciated, thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半夏半凉 2024-12-20 04:17:00

在 python 2.7 或更高版本中,您可以使用计数器:
http://docs.python.org/dev/library/collections。 html#collections.Counter

>>> mywords = ['red', 'blue', 'red', 'green', 'blue', 'blue']
>>> cnt = Counter(mywords)
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

根据 使用 python 排序词频计数

if你需要字母而不是单词,你可以这样写:

>>> mywords = ['red', 'blue', 'red', 'green', 'blue', 'blue']
>>> myletters=list("".join(mywords))
>>> myletters
['r', 'e', 'd', 'b', 'l', 'u', 'e', 'r', 'e', 'd', 'g', 'r', 'e', 'e', 'n', 'b', 'l', 'u', 'e', 'b', 'l', 'u', 'e']
>>> Counter(myletters)

in python 2.7 or higher you can use a counter:
http://docs.python.org/dev/library/collections.html#collections.Counter

>>> mywords = ['red', 'blue', 'red', 'green', 'blue', 'blue']
>>> cnt = Counter(mywords)
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

as per Sorted Word frequency count using python

if you need letters instead of words you can go like this:

>>> mywords = ['red', 'blue', 'red', 'green', 'blue', 'blue']
>>> myletters=list("".join(mywords))
>>> myletters
['r', 'e', 'd', 'b', 'l', 'u', 'e', 'r', 'e', 'd', 'g', 'r', 'e', 'e', 'n', 'b', 'l', 'u', 'e', 'b', 'l', 'u', 'e']
>>> Counter(myletters)
¢蛋碎的人ぎ生 2024-12-20 04:17:00

对于Python2.7+,使用 collections.Counter 及其 most_common 方法:

import collections

text='abccccabcbb'
count=collections.Counter(text)

print(count.most_common())
# [('c', 5), ('b', 4), ('a', 2)]

print(''.join(letter*freq for letter,freq in count.most_common()))
# cccccbbbbaa

对于Python2.6或更低版本,您可以使用等效的方法<一href="http://code.activestate.com/recipes/576611/" rel="nofollow">反配方。

For Python2.7+, use a collections.Counter and its most_common method:

import collections

text='abccccabcbb'
count=collections.Counter(text)

print(count.most_common())
# [('c', 5), ('b', 4), ('a', 2)]

print(''.join(letter*freq for letter,freq in count.most_common()))
# cccccbbbbaa

For Python2.6 or lower, you can use the equivalent Counter recipe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文