字典
~~不定时更新🎃,上次更新:2023/02/28
🗡常用函数(方法)
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 ∗ 1 0 9 1.5*10^9 1.5∗109。已知不相同的数不超过 1 0 4 10^4 104 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入描述
第 1 行是整数 n,表示自然数的个数。
第 2 ~ n+1行每行一个自然数。
其中, 1 ≤ n ≤ 2 ∗ 1 0 5 1 \le n \le 2*10^5 1≤n≤2∗105,每个数均不超过 1.5 ∗ 1 0 9 1.5*10^9 1.5∗109。
输出描述
输出 m 行( m 为 n 个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
输入输出样例
示例 1
输入
8
2
4
2
4
5
100
2
100
输出
2 3
4 2
5 1
100 2
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路
- 由于数的范围相对较大,所以我们不会开等量的数组(列表)。我们可以通过字典进行存储,其中键表示出现的数字,值表示该数字出现的次数。
- 通过字典内置的 get 方法,我们可以很好判断,该数字是否有在字典中,没有就设其对应的值为1(相当于出现一次),有就直接对键+1(相当于出现次数+1)
- 我们通过对字典的键进行排序,就可以得到题目中想要的效果,最后遍历即可
代码
dic = {}
n = int(input())
for i in range(n):
x = int(input())
if dic.get(x) == None:
dic[x] = 1
else:
dic[x] += 1
dic = sorted(dic.items(),key=lambda x:x[0])
for i in dic:
print(i[0],i[1])
如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ