input_string=mississippi
output_dict={letters=[i,s,p,m],count=[4,4,2,1]}
从input_string
中删除重复的条目,并对这些重复的值进行计数并以降序显示。
实际的以下代码删除重复项,但如何计算重复值
def mock(input_string):
a=list(input_string)
list1=[]
for i in a:
if i not in list1:
list1.append(i)
print(list1)
mock("radffffghhh")
答案 0 :(得分:2)
d={}
for i in input_string:
d[i]=d.get(i,0)+1
按相反的值对字典排序
sorted(d.items(), key=lambda kv: kv[1],reverse=True)#[('i', 4), ('s', 4), ('p', 2), ('m', 1)]
使用groupby
from itertools import groupby
{k:len(list(v)) for k,v in groupby(sorted(input_string))}
使用柜台
from collections import Counter
Counter(input_string)
答案 1 :(得分:1)
编辑以在没有计数器的情况下执行此操作:
def char_counter(string):
count = {}
for s in string:
if s in count:
count[s] += 1
else:
count[s] = 1
return count
char_counter(input_string)
“密西西比州”的输出:
>>> char_counter(input_string)
{'i': 4, 'm': 1, 'p': 2, 's': 4}
collections有一个名为Counter的软件包。所以拿你的字符串:
from collections import Counter
input_string='mississippi'
Counter(input_string) # call Counter on your input string
#alternative to just call counter on the string:
Counter('mississippi')
两者的输出:
>>> Counter(input_string)
Counter({'i': 4, 'm': 1, 'p': 2, 's': 4})
>>> Counter('mississippi')
Counter({'i': 4, 'm': 1, 'p': 2, 's': 4})