【PTA-python】 第3章-6 求整数序列中出现次数最多的数 (15 分)

分析

counts.get(w, 0) 中get()函数进行检测,若字典counts中包含w这个key(单词),则返回对应的value(counts中的词频);若不包含,则返回第二个参数0;最后将当前的w词进行计数+1(思想:看看counts里面有没有这个单词,有则在原有词频上+1;没有则插入新的key-value,key为当前单词,value为1)
使用字典存储数字的键值,次数每次自增1。
count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
字符串逆序:
ss=s[::-1]

题目

本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:

输入在一行中给出序列中整数个数N(0 输出格式:

在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

解法一:使用字典,及排序函数

把输入的数据转换为int,放入列表。使用字典,遍历计数列表里的数,得到次数。最后使用sort函数,同时借助lambda表达式,取键值对的第二个元素,按出现次数排序。

Lambda表达式是Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数。与其它语言不同,Python的Lambda表达式的函数体只能有单独的一条语句,也就是返回值表达式语句。其语法如下: [2]
lambda 形参列表 : 函数返回值表达式语句
下面是个Lambda表达式的例子:
#!/usr/bin/envpython
li=[{“age”:20,“name”:“def”},{“age”:25,“name”:“abc”},{“age”:10,“name”:“ghi”}]
li=sorted(li, key=lambda x:x[“age”])
print(li)
如果不用Lambda表达式,而要写成常规的函数,那么需要这么写:
#!/usr/bin/envpython
def comp(x):
return x[“age”]
li=[{“age”:20,“name”:“def”},{“age”:25,“name”:“abc”},{“age”:10,“name”:“ghi”}]
li=sorted(li, key=comp)
print(li)

lst=list(map(int,input().split()))
nums=lst[1:lst[0]+1]
words={}
for num in nums:
	words[num]=words.get(num,0)+1
key_value=list(words.items())#在这里实际上列表里每个元素是个键值对
key_value.sort(key=lambda x:x[1],reverse=True)
word,number=key_value[0]#两个元素,不需要的不输出即可
print("{} {}".format(word,number))

解法二:使用字符串的count函数

使用字符串就需要把输入看作是字符串。
a=input().split()
Python count()方法
Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

a=input().split()
n=a[0]
m=a[1]
cnt=1
for i in range(2,len(a)):
	if a.count(a[i])>cnt:
		cnt=a.count(a[i])
		m=a[i]
print("{} {}".format(m,cnt))

你可能感兴趣的:(PTA-python,python)