按字母和频率创建包含已排序计数器的数组

时间:2016-05-04 07:26:28

标签: python arrays sorting python-3.x

我正在学习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)

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

1 个答案:

答案 0 :(得分:0)

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

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

请查看here以获取有关如何使用lambda的详细说明。