python 字典排序题:生成60个30-100之间的随机整数作为分数(score),统计其中各个分数出现的次数,按照出现次数的从高到低的顺序打印出来。

题目:

生成60个30-100之间的随机整数作为分数(score),统计其中各个分数出现的次数,按照出现次数的从高到低的顺序(不包括出现次数为0的分数)打印出来。

首先采用每行:分数 次数格式输出
其次每行: 次数:分数1、分数2… 的格式输出

代码:

import random

score_num = {}   # key=score,value=num
for _ in range(60):
    score = random.randint(30, 100)    # 产生30-100的随机整数(包括30和100)
    score_num[score] = score_num.get(score, 0) + 1    # 更新score的次数

num_scores = {}   # key=num,value=list[score]
for score, num in sorted(score_num.items(), key=lambda x: (-x[1], x[0])):
    print(f'{score}\t{num}')
    if num in num_scores:
        num_scores[num].append(str(score))
    else:
        num_scores[num] = [str(score)]   # value以列表形式存放

print()
for num, scores in sorted(num_scores.items(), key=lambda x: (-x[0], x[1])):
    print(f'次数 {num}:  {", ".join(scores)}')

result:

69	4
43	3
47	3
59	3
75	3
42	2
51	2
56	2
62	2
63	2
74	2
76	2
79	2
90	2
95	2
31	1
33	1
35	1
40	1
46	1
50	1
52	1
53	1
58	1
61	1
65	1
67	1
68	1
70	1
71	1
72	1
80	1
81	1
85	1
88	1
89	1
96	1
99	1
100	1

次数 4:  69
次数 3:  43, 47, 59, 75
次数 2:  42, 51, 56, 62, 63, 74, 76, 79, 90, 95
次数 1:  31, 33, 35, 40, 46, 50, 52, 53, 58, 61, 65, 67, 68, 70, 71, 72, 80, 81, 85, 88, 89, 96, 99, 100
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ctrl A_ctrl C_ctrl V

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

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

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

打赏作者

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

抵扣说明:

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

余额充值