python - Python中的字符数
问题描述
给定任务:需要从用户那里得到一个词,然后必须统计该词中的总字符并按排序顺序显示(计数必须降序,字符必须升序 - 即,如果用户给出“管理”,那么输出应该是
**a 2
e 2
m 2
n 2
g 1
t 1**
这是我为该任务编写的代码:
string=input().strip()
set1=set(string)
lis=[]
for i in set1:
lis.append(i)
lis.sort()
while len(lis)>0:
maxi=0
for i in lis:
if string.count(i)>maxi:
maxi=string.count(i)
for j in lis:
if string.count(j)==maxi:
print(j,maxi)
lis.remove(j)
这段代码为我提供了字符串“管理”的以下输出
a 2
m 2
e 2
n 2
g 1
t 1
m & e 未排序。我的代码有什么问题?
解决方案
您的代码的问题在于您试图从列表中删除一个元素,而您仍在对其进行迭代。 这可能会导致问题。目前,您删除了“a”,然后“e”占据了它的位置 - 列表前进到下一个字母“m”。因此,“e”被跳过,直到下一次迭代。
尝试将打印和删除分开,不要从当前迭代的列表中删除元素 - 相反,尝试将所有其他元素添加到新列表中。
string=input().strip()
set1=set(string)
lis=[]
for i in set1:
lis.append(i)
lis.sort()
while len(lis)>0:
maxi=0
for i in lis:
if string.count(i)>maxi:
maxi=string.count(i)
for j in lis:
if string.count(j)==maxi:
print(j,maxi)
dupelis = lis
lis = []
for k in dupelis:
if string.count(k)!=maxi:
lis.append(k)
管理
a 2
e 2
m 2
n 2
g 1
t 1
推荐阅读
- ios - 使用 PDFKIT 在 PDF 查看器中移动文本框 - Swift
- mysql - 如何选择第n行到最后一条记录sql?
- kubernetes - 从子图表访问父(图表)上下文
- python-3.x - 在 S3 存储桶上上传对象时出现问题
- angular - store.select() 在ngrx angular中被多次调用
- javascript - 即使提供了唯一键,在更改父级后子级也无法正确重新渲染
- c++ - C ++循环地图 - 消失的对象
- java - Spark 不推送过滤器(PushedFilters 数组为空)
- css - 使用 Bootstrap 的 flex div 行和列的重叠大小固定块
- php - Laravel DB 一次运行两个查询(SELECT/UPDATE)