按使用量对变量的字符进行排序(PYTHON)

按使用量对变量的字符进行排序(PYTHON),python,Python,例如: 输入要排序的数据:“Hello World” 已排序:[“l”,3,“o”,2,“W”,1,“H”,1,“W”,1,“d”,1,“e”,1,“r”,1] 按ASCII顺序 所以我想把它放到一个表中,按照它出现的次数和字符出现的次数的顺序排列 #Like this uncompressedInput = input("Enter data to compress: ") # user inputted "abc" print("Analysing...") #sorted = str.so

例如:

输入要排序的数据:“Hello World” 已排序:[“l”,3,“o”,2,“W”,1,“H”,1,“W”,1,“d”,1,“e”,1,“r”,1] 按ASCII顺序 所以我想把它放到一个表中,按照它出现的次数和字符出现的次数的顺序排列

#Like this
uncompressedInput = input("Enter data to compress: ")
# user inputted "abc"
print("Analysing...")
#sorted = str.sort(uncompressedInput)
#print(sorted)
# ["a", 1, "b", 1, "c", 1]
使用

如果你想要和你说的一模一样的结构

排序:[“l”,3,“o”,2,”,1,“H”,1,“W”,1,“d”,1,“e”,1,“r”, 1]


尽管如此,我不建议这样做,因为这样做会使进一步的计算更加混乱。

一个
计数器没有排序,您需要调用
。大多数常用的()
忘记添加它。感谢@Chris_randsdopplicate可能重复的Check
collections.Counter.most_common()
:不鼓励只使用代码的答案。你能解释一下为什么这能达到预期效果吗?
集合。计数器未订购
import collections
letters = collections.Counter(uncompressedInput)
print(letters)
>>> l = []
>>> [ l.extend([key,val]) for key,val in collections.Counter(s).most_common() ]
>>> l
=> ['l', 3, 'o', 2, 'H', 1, 'e', 1, ' ', 1, 'W', 1, 'r', 1, 'd', 1]
import collections
letters = collections.Counter(uncompressedInput)
print(letters)
from collections import Counter
[e for x in sorted(Counter("hello world").items(), key=lambda t: t[1], reverse=True) for e in x]