python列表字母排序方法,Python 大小排序
主题
指定列表。该列表仅包含字符。请统计每个字符的出现次数,按出现次数排序,最后返回字典格式。
例如:
指定列表。[a , a , c , b , d , c , c , d , d]
返回结果。{c: 4, d: 3, a: 2, b: 1}
实现概念1
使用Python的计数器,可以跟踪值的出现次数,并返回dictionary dict的子类Counter类对象。
使用Python内置函数sorted()结合匿名函数lambda进行排序,设置reverse=True表示降序。
将结果转换成字典dict格式并返回
注意:sorted()返回新列表的列表,这些列表必须转换为字典格式并返回。
代码实现
从集合中导入计数器
defdemo(str_list):
temp=计数器(str_list)
RES_list=sorted(temp.items(,key=lambda x: x[1],reverse=True)).
RES_dict=dict(RES_list)).
返回res_dict
str_list=[a ,a ,c ,b ,c ,c ,c ,d ,d]
打印(演示(str _ list))
实现思路2
设置一个空字典temp_dict来存储列表中的字符及其出现的位置。
遍历列表,如果当前字符在字典中不存在,它将作为键值为1的键存储在字典中;如果当前字符存在于字典中,则将字典的相应键值加1。
字典中的keys()和values()方法获取字母列表key_list和对应的字母计数列表value_list。
字母列表对value_list进行排序。这里用的冒泡排序是从小到大排序,让字母对应出现次数,字母列表key_list也是排序。
排序后,内置函数zip()和两个列表转换成字典,按照字母出现的次数排序。
代码实现
defdemo(str_list):
temp_dict={}
对于str_list中的I:
如果我不在临时字典中:
temp_dict[i]=1
否则:
temp_dict[i]=1
ky_list=list(temp_dict.keys()
value _ list=list(temp _ dict . values()
forIinrange(Len ) value_list )- 1):
forjinrange(len)value _ list)-I-1):
if value _ list [ j ] value _ list [ J1 ]:
值列表[j],值列表[j 1]=值列表[j 1],值列表[j]
密钥列表[j],密钥列表[j 1]=密钥列表[j 1],密钥列表[j]
RES _ dict=dict(zip(key _ list[:3360-1],value_list[:-1])
返回res_dict
str_list=[a ,a ,c ,b ,c ,c ,c ,d ,d]
打印(演示(str _ list))
实现理念3
设置包含字符及其出现次数的空列表temp_list,并以元组形式(characters,times)添加此元素。
设置用于存储列表中所有字符的set temp_set。
遍历集合,在遍历时将字符及其出现的位置添加到temp_list中。
temp_list中的元素按照字母数量从小到大的顺序排列。
使用内置函数dict()将列表转换成字典,并按字母顺序排序。
代码实现
defdemo(str_list):
temp_list=[]
TEMP_set=set(str_list)
对于i in temp_set:
temp_list.append((I,str_list.count(i ) I)))
forIinrange(len(temp_list )- 1):
forjinrange(len ) temp_list )- i - 1):
if temp _ list[j][1]temp _ list[J1][1]:
临时列表[j],临时列表[j 1]=临时列表[j 1],临时列表[j]
RES _ dict=dict(temp _ list[:3360-1])))
返回res_dict
str_list=[a ,a ,c ,b ,c ,c ,c ,d ,d]
打印(演示(str _ list))
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。