Python 计算字符串中连续字母的数量,然后根据其频率进行排序
我试图计算每个字母在字符串中重复的次数,然后对其进行排序。例如,假设我的字符串为:Python 计算字符串中连续字母的数量,然后根据其频率进行排序,python,string,sorting,alphabetical,Python,String,Sorting,Alphabetical,我试图计算每个字母在字符串中重复的次数,然后对其进行排序。例如,假设我的字符串为: AADDADCBBB 我想创建一个函数来返回每个字母在一行中重复的次数;在这种情况下,我们将得到: "A: 2, D: 2, A: 1, D: 1, C: 1, B: 3" 然后,我希望能够根据以下内容对其进行排序: 最高频率,以及 按字母顺序 预期结果是: "B: 3, A: 2, D: 2, A: 1, C: 1, D: 1" 如何在Python中实现这一点?
AADDADCBBB
我想创建一个函数来返回每个字母在一行中重复的次数;在这种情况下,我们将得到:
"A: 2, D: 2, A: 1, D: 1, C: 1, B: 3"
然后,我希望能够根据以下内容对其进行排序:
- 最高频率,以及
- 按字母顺序
"B: 3, A: 2, D: 2, A: 1, C: 1, D: 1"
如何在Python中实现这一点?您可以通过以下方式实现:
from itertools import groupby
my_str = 'AADDADCBBB'
tup = [(i, len(list(l))) for i, l in groupby(my_str)]
其中tup
是包含字母表的元组列表,其计数为:
现在,要根据字母表的计数和词典的优先顺序对这个元组进行排序,可以使用with key aslambda x:(-x[1],x[0])
这里,-[1]
将根据1
st索引处元素值的降序对元组进行排序。如果多元组的此值相同,则将在x[0]
上进行二次排序。它将根据0
th索引中的元素按升序排序
例如:
from operator import itemgetter
sorted_tup = sorted(tup, key=lambda x: (-x[1], x[0]))
其中,sorted\u tup
将保存以下值:
[('B', 3), ('A', 2), ('D', 2), ('A', 1), ('C', 1), ('D', 1)]
看起来你已经确定了这些步骤,现在只是简单地实施它们。是的,但我不知道如何做到这一点,这就是我为什么问的原因。
[('B', 3), ('A', 2), ('D', 2), ('A', 1), ('C', 1), ('D', 1)]