字典的应用-找出出现次数最多的字符串(高教社,《Python编程基础及应用》习题7-6)

题目

编写一个程序,从键盘读取未指定个数的字符串,一行一个,以字符串"q"为输入结束标志("q"不列入统计范围)。使用字典找出其中出现次数最多的字符串,打印该字符串及其出现次数。

注意:本题的测试用例中将保证只有一个字符串出现次数最多。

输入格式:

字符串1

字符串2

...

字符串n

q

输出格式:

字符串 出现次数

输入样例: 

abc
abc
bcd
xxx
q

输出样例:

abc 2

解题

题目代码:

js = {}
while True:
    s = input()
    if s == 'q':
        break
    js[s] = js.get(s,0) + 1 #若s不存在返回0
jg = []
for k,v in js.items():
    jg.append([k,v])
jg.sort(key=lambda x:x[1],reverse = True) #通过v值进行排序
print(jg[0][0],jg[0][1])

代码解释:

代码先是创建了一个空字典用来接收用户输入的字符串

然后就是while死循环一直读入用户输入的字符串,直到收到q即退出循环

接着是通过字典的get函数对输入的字符串进行计数

跳出循环后再创建一个空列表为后面的操作做准备

然后就是for循环对items()方法进行解包,然后再通过append()方法以元组的形式加入列表

最后通过list.sort()进行逆排序,期间使用了lambda匿名函数,输出第一个元组的各元素

代码内相关内容解释:

get()方法

返回指定键的值,有两个参数,第一个参数是键名,第二个是默认值(键不存在返回该值),第二个参数省略是None

items()方法

dict.items()使dict中的键值对生成一个dict_items类型的数据,表现为一个元组,可以通过list()函数转换成列表

eg:  {'a'=1,'b'=2}.items() ------->  [(a,1),(b,2)]

lambda匿名函数

函数是匿名的,它们没有函数名称,只能通过赋值给变量或作为参数传递给其他函数来使用,一般只有一行代码

lambda arguments: expression

arguments:是参数列表,个数大于等于0,必须在:前面给出

expression:是个表达式,用于计算返回函数的值

本题是给出参数列表x,返回x[1]的值用于sort()方法的逆排序

总结

本题代码要长一点,写的会复杂一点,使用了一些字典的方法以及lambda匿名函数,知识点挺丰富的,多理解理解就可以掌握了哦,加油学习python呢

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值