> 文章列表 > Python字典-- 内附蓝桥题:统计数字

Python字典-- 内附蓝桥题:统计数字

Python字典-- 内附蓝桥题:统计数字

字典

~~不定时更新🎃,上次更新:2023/02/28
Python字典-- 内附蓝桥题:统计数字

🗡常用函数(方法)

1. dic.get(key) --> 判断字典 dic 是否有 key,有返回其对应的值,没有返回 None

举个栗子🌰

dic = {2:9, 5:8, 4:6}
print(dic.get(2)) # 9
print(dic.get(0)) # None

2. dic.items() --> 将字典以列表返回可遍历的(键、值)元组数组

🔴主要用于遍历键值举个栗子🌰

dic = {"左轮":"123","右轮":"567"}
for key,value in dic.items():print(key,value)# 左轮 123# 右轮 567

🔵主要用于按键排序或者按值排序举个栗子🌰

dic = {2:9, 5:8, 4:6}
x1 = sorted(dic.items(),key=lambda x:x[0]) # 按键排序
print(x1) # [(2, 9), (4, 6), (5, 8)]x2 = sorted(dic.items(),key=lambda x:x[1]) # 按值排序
print(x2) # [(4, 6), (5, 8), (2, 9)]

蓝桥例题1- 统计数字 1️⃣2️⃣3️⃣

题目描述

某次科研调查时得到了 n自然数,每个数均不超过 1.5∗1091.5*10^91.5109。已知不相同的数不超过 10410^4104 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

输入描述

1 行是整数 n,表示自然数的个数。

2 ~ n+1行每行一个自然数。

其中,1≤n≤2∗1051 \\le n \\le 2*10^51n2105,每个数均不超过 1.5∗1091.5*10^91.5109

输出描述

输出 m 行( mn 个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

输入输出样例

示例 1

输入

8
2
4
2
4
5
100
2
100

输出

2 3
4 2
5 1
100 2

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路

  1. 由于数的范围相对较大,所以我们不会开等量的数组(列表)。我们可以通过字典进行存储,其中键表示出现的数字,值表示该数字出现的次数。
  2. 通过字典内置的 get 方法,我们可以很好判断,该数字是否有在字典中,没有就设其对应的值为1(相当于出现一次),有就直接对键+1(相当于出现次数+1)
  3. 我们通过对字典的键进行排序,就可以得到题目中想要的效果,最后遍历即可

代码

dic = {}n = int(input())
for i in range(n):x = int(input())if dic.get(x) == None:dic[x] = 1else:dic[x] += 1dic = sorted(dic.items(),key=lambda x:x[0])for i in dic:print(i[0],i[1])

如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ