2024-04-18 22:39:24 发布
网友
我试图计算每个字母在字符串中重复的次数,然后对其进行排序。例如,假设我的字符串为:
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是包含字母的元组列表,其计数为:
tup
[('A', 2), ('D', 2), ('A', 1), ('D', 1), ('C', 1), ('B', 3)]
现在,要根据字母表的计数对这个元组进行排序,然后根据字典的优先顺序,可以使用^{},键为lambda x: (-x[1], x[0])
lambda x: (-x[1], x[0])
这里,-[1]将根据1st索引处元素值的降序对元组进行排序。如果多元组的此值相同,则将在x[0]上进行二次排序。它将根据第0个索引中的元素按升序排序
-[1]
1
x[0]
0
例如:
from operator import itemgetter sorted_tup = sorted(tup, key=lambda x: (-x[1], x[0]))
其中sorted_tup将保存该值:
sorted_tup
[('B', 3), ('A', 2), ('D', 2), ('A', 1), ('C', 1), ('D', 1)]
您可以使用^{} 实现以下目的:
其中
tup
是包含字母的元组列表,其计数为:现在,要根据字母表的计数对这个元组进行排序,然后根据字典的优先顺序,可以使用^{} ,键为
lambda x: (-x[1], x[0])
这里,
-[1]
将根据1
st索引处元素值的降序对元组进行排序。如果多元组的此值相同,则将在x[0]
上进行二次排序。它将根据第0
个索引中的元素按升序排序例如:
其中
sorted_tup
将保存该值:相关问题 更多 >
编程相关推荐