给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。

题目描述

给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。

【输入形式】第一行包含一个整数n,表示给定数字的个数; 第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。

【输出形式】输出有多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。

【样例输入】

12

5 2 3 3 1 3 4 2 5 2 3 5

【样例输出】

3 4

2 3

5 3

1 1

4 1

解题思路:

1.将所有数字排序

2.统计次数

3.对次数进行排序

代码

一开始代码如下:

# coding=utf-8
n = eval(input())
s = input().split(" ")
s.sort()  # 1.将所有数字排序
dit = {}
for x in s:#2.统计次数
    dit[x] = dit.get(x, 0)+1
#3.按照字典的值降序排列
dit1 = dict(sorted(dit.items(), key=lambda x: x[1], reverse=True))
print("------------运行结果------------")
for key in dit1:
    print(key, dit1[key])

'''
测试用例:
12
5 2 3 3 1 3 4 2 5 2 3 5
'''

运行结果出来也符合要求

但当带入测试用例2时,出现了错误,没有按照预期格式输出

 经过测试,后来发现是第一步排序出了问题,经过排序后的列表,是这个样子的

 然后我就明白了,上面的代码能完成测试一,是因为字符串的比较是从字符串的第一个字符开始比较,谁的ASCII码大谁就大。如果第一个相同,则比较第二个。以此类推。如果都相同则相等。

所以需要将字符串列表转化为数字列表

修改后的代码如下:

# coding=utf-8
n = eval(input())
s = input().split(" ")
ls = [eval(i) for i in s]
ls.sort()  # 1.将所有数字排序
dit = {}
for x in ls:  # 2.统计次数
    dit[x] = dit.get(x, 0)+1
# 3.按照字典的值降序排列
dit1 = dict(sorted(dit.items(), key=lambda x: x[1], reverse=True))
print("------------运行结果------------")
for key in dit1:
    print(key, dit1[key])

'''
测试用例:
12
5 2 3 3 1 3 4 2 5 2 3 5
1000
11789 1070 1254 6780 3699 9116 1070 5622 16859 28790 20615 20615 25994 21273 6679 13213 1043 28287 21849 32603 5454 27069 5454 28287 32603 26628 25362 1254 21050 18667 14893 5622 19445 2816 2064 3971 17610 9739 10744 6560 25474 17610 22772 13213 13633 6560 5454 19368 21849 2332 644 6613 2332 12341 5690 28737 21100 12553 26628 32603 1135 16253 4206 26628 30046 5690 15878 6744 4206 11193 22772 12755 2971 25994 223 32216 7305 21100 11155 6780 17209 6679 13213 31469 20910 22772 6057 12553 8576 2816 74 11711 2332 13213 16162 644 17209 5454 20034 28790 18667 5622 19368 3971 28737 5454 30622 20615 4206 17209 25994 29125 15163 7276 74 13213 25362 31530 10744 8576 4206 29125 2971 9509 12341 17209 1254 31542 30622 1070 25474 6560 11711 9823 11711 3971 13964 21050 3569 27069 28287 1070 21279 25994 20615 10023 3556 1070 20034 6057 21762 2795 22628 29598 31542 2816 4206 6613 11109 11711 4206 14019 1043 28737 11711 12553 6780 6744 12755 21100 6057 7626 21050 9116 7626 6560 8576 13964 30622 2444 19368 19445 17209 2795 6679 11728 2332 20034 644 12608 2816 9509 17610 5690 3569 5690 21100 3569 11109 5690 5690 4206 7305 31469 16162 20910 644 11155 25474 11193 2444 7626 13964 22635 25362 18667 26560 2795 7626 7035 25362 644 27069 21279 25994 14019 6744 11711 16859 1070 11728 14019 2064 1254 12341 14893 20034 5622 3556 27069 30046 6578 14893 30046 6744 15878 16162 30046 74 31530 11728 2064 11155 28790 20910 6057 7035 6578 31469 29598 2064 30622 21849 13213 21279 6744 31530 13213 3569 26628 21050 12608 223 1070 16253 6744 28737 26628 5622 26560 21050 31542 16859 15163 14050 19368 32603 6578 16370 2795 21849 6780 21273 1043 21762 7035 28790 22772 26628 22628 21050 21762 7035 14050 2064 2795 10744 21273 19445 16253 28287 1043 2971 6679 9823 16555 22635 25994 644 9509 16162 21100 31530 2795 14019 31469 28790 31542 30046 30046 17209 15163 16555 5690 12608 13213 13633 13633 14893 30622 10023 8576 19368 30046 3569 22635 14050 28790 29125 16555 21279 2816 6780 16859 16555 2795 17610 15163 2444 17610 20615 12755 6679 17209 25994 31530 14893 5454 7035 25994 25474 9116 770 21279 9823 19368 20034 12755 17610 12608 11711 15163 32603 12755 21100 21050 6679 27069 20082 15163 770 19445 1043 11711 29125 12341 20082 10744 20615 5690 21273 5622 7626 7305 13964 12553 6744 2795 6744 6679 16370 11789 14019 4206 29598 11193 11155 11193 2795 1135 770 11789 10744 21100 10744 22635 21273 28287 7035 644 32216 15163 7276 2816 16370 14050 17610 7305 9509 16253 10744 3971 26560 16370 21279 20034 16859 16162 13964 30046 17209 15878 29125 30046 28287 19445 13964 13213 14050 29598 6057 13213 18667 20082 11711 9823 11193 770 26628 17209 20910 7626 6560 6744 223 16370 770 5622 19368 21100 9509 2816 14050 9116 2795 6560 12608 25994 6744 2444 15163 10023 223 16370 9739 25362 21762 1043 3556 31469 19445 7626 11789 2064 11711 12608 21762 12608 9823 10023 1043 11155 32216 19445 3569 30046 9509 644 25474 21100 31530 1043 13213 20082 15878 2444 9739 2332 12608 17610 25362 31542 10023 644 6613 7035 10744 8768 1070 7305 6744 21273 7035 13633 13213 19368 26560 2064 21849 25474 20910 10744 11711 6613 2332 10023 2064 3556 1070 6679 9509 10023 22628 11711 14050 4206 22635 32216 9509 29598 32603 27069 74 3971 27069 20910 15163 14019 19445 6057 30622 15878 16162 10744 11728 10744 1070 9116 14050 9509 5454 16859 3971 11728 17610 22772 1043 2816 21762 12608 22772 6560 17209 11728 20034 13964 19445 30622 223 7035 15163 2444 6679 26628 12341 14893 18667 2332 3971 16555 16859 6560 8576 18667 2971 3569 20615 10023 31469 9739 3699 11155 30622 17209 22772 26560 3569 3556 20615 2971 8768 7626 30046 3569 26628 26628 1070 3699 2816 3569 18667 74 6560 29125 4206 26628 11789 11193 15878 6613 20910 14050 22635 25474 1135 20082 10023 4206 21050 6780 30046 14893 25474 11155 6560 31542 8768 20034 2795 11155 2816 6578 9739 28790 13964 18667 11789 6057 32603 21849 6560 16859 5454 7276 11728 16370 32216 26628 14019 32216 11155 13964 9739 25362 20082 25994 9116 3569 31469 7626 32216 16555 4206 30046 644 21100 21100 28287 12341 14050 6780 14893 18667 29598 25994 17209 12608 20910 17610 1070 22772 2971 74 7626 13633 32603 1135 6578 770 16253 29598 26628 29598 9739 6560 12755 15878 16253 20082 11728 32603 14893 16162 2816 2795 25474 25474 19445 3971 21273 31469 6578 26560 3971 7276 2971 13213 32216 14019 1135 13964 27069 26560 644 7626 9116 770 3699 1254 223 21279 9739 13633 29598 1135 11789 2064 15163 22628 21762 30046 21050 7276 20034 21273 13213 2971 21279 1043 21100 5622 20615 8576 21100 5622 17209 1070 22628 2971 21849 15163 11193 31542 21849 6560 11109 32216 31542 223 20910 29598 32603 11728 14893 19368 28287 644 16859 14893 14893 10023 6560 1070 3699 6578 30046 19368 770 1254 28790 30046 6578 12553 5454 2816 28287 8576 6057 18667 770 10744 6744 1135 19368 6780 5454 14019 13964 12553 74 6679 16162 21100 1135 29598 20910 5454 28737 13964 5454 9509 3971 2816 11789 16162 20910 2064 9739 6578 1043 6780 2816 5454 6744 14050 5690 9739 6744 17610 4206 21762 21050 20034 19445 31469 4206 2332 6780 20615 31530 21050 19445 2444 20082 18667 14019 6578 30046 11711 11109 16370 28287 21849 5690 31530 2064 29598 19445 21762 9739 12608 11193 2444 25362 9116 11109 25994 25994 10744 6744 16555 17610 5690 6780 15878 74 644 6560 16555 21279 1135 7305 74 3971 8768 21100 16555 21762 32603 21273 10744 16859 5690 5690 32603 16162 27069 644 15163 5622 19445 1070 7305 16370 12553 28790 16370 11789 21279 11155 17209 13213 6560 17610 6578 21100 6057 26560 25474 22628 11155 74 31542 30622 20615 5622 3971 16370 644 21100 21050 2064 27069 17209 1254 17209 22635 13633 6560 26628

'''

这样就运行成功了

 

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值