【问题标题】:Creating an array that contains sorted Counter both by letter and frequency创建一个包含按字母和频率排序的计数器的数组
【发布时间】:2025-12-02 01:20:09
【问题描述】:

我现在正在学习 Python 几天,我需要帮助。我正在尝试创建一个程序,该程序将要求用户输入一个单词/短语,该程序会将其存储在一个按字母和频率排序的数组中。 这是我正在尝试做的一个示例:

输入:甜的东西

所需输出: 'e':2, 'f':2, 's':2, 't':2, 'u':1, 'w':1, ' ':1

我有这段代码,但它只按第二个键(数字)的降序排序

arr = []
word = input("Please enter a word/phrase: ")
arr = (collections.Counter(word)).most_common
print (arr)

有没有办法垂直打印?感谢您的帮助!

【问题讨论】:

    标签: python arrays sorting python-3.x


    【解决方案1】:
    for _ in sorted(arr, key=lambda x: x[1], reverse=True):
        print('{}:{}'.format(_[0],_[1]))
    

    说明: key 参数指定一个函数 (lambda) 在进行比较之前对每个列表元素调用(这里是提取每个元素的第二个元素)。这是 Python 中的常见构造。 通过设置reverse=True,输出从最高元素开始。这相当于sorted(arr, key=lambda x: x[1])[::-1]

    查看here,了解如何使用lambda

    【讨论】: