字典-出现最多次数的最小值

# 已知一个列表[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5],
# 求其中出现次数最多的数字。如果有多个数字出现次数相同且最多,返回其中最小的数字。


看到这个题目,第一个想到的就是for循环来比较,那么我们应该怎么找到次数最多的数字呢,我们是不是可以想到,哪个东西可以储存他的数字和他出现的次数(有一定的刷题基础),我们回想一下,有哪些东西可以存储数据,列表,集合......


在Python中,列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)是四种不同的数据结构,它们各自有不同的特点和用途。

列表(List)

列表是一种有序的数据集合,它可以包含不同类型的元素,甚至可以包含另一个列表(即嵌套列表)。列表是可变的,这意味着我们可以在程序运行期间修改列表的内容,如添加、删除或更改元素。列表使用方括号[]表示,例如:

my_list = [1, 'hello', 3.14, [2, 4, 6]]

列表支持索引和切片操作,可以通过索引访问单个元素,或通过切片访问子列表。

元组(Tuple)

元组与列表类似,也是有序的集合,但元组是不可变的,一旦创建就不能修改。这意味着我们不能添加、删除或更改元组中的元素。元组使用圆括号()表示,例如:

my_tuple = (1, 'hello', 3.14)

元组的不可变性使得它在某些情况下比列表更适用,例如作为字典的键或函数的返回值。

字典(Dictionary)

字典是一种无序的键值对集合,它通过键来存储和访问值。字典中的键必须是唯一的,而值则可以是任何类型。字典使用花括号{}表示,例如:

my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

字典提供了快速访问、添加和删除键值对的能力,非常适合用于存储和组织数据。

集合(Set)

集合是一种无序的、不包含重复元素的集合。它主要用于去除重复元素和进行集合运算,如并集、交集和差集。集合使用花括号{}表示,但与字典不同,集合只包含键,不包含值。例如:

my_set = {1, 2, 3, 4, 5}

集合不支持索引和切片,因为它是无序的。

总结来说,列表和元组都是有序集合,但列表是可变的,而元组是不可变的。字典是一种通过键访问值的无序集合,而集合是一种只包含唯一元素的无序集合。这些数据结构的选择取决于具体的应用场景和需求。


从上面的知识点我们可以看出,字典既能存储值,又能存储值的数据,值称之为键,数据称之为键对,统称键对


def show():
    a=[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
    b={}
    for i in a:
        if i not in b:
            b[i]=1
        else:
            b[i]+=1
    max_b=max(b.values())
    c=[]
    for x,y in b.items():
        if y==max_b:
            c.append(x)
    print(min(c))
show()

这里可以运用一个小技巧,首先创建一个字典,遍历列表a的数据循环,如果a的数据在字典b里面,那么就数值+1,否则,数值就为1,对于刚刷字典(出现次数)的题目的同学非常友好。

这里又涉及了 一个小的知识点:


items()和values()

  • b.items() 返回的是一个包含字典中所有键值对的视图对象。每个键值对是一个元组 (key, value)其中 key 是字典的键,value 是对应的值。所以可以使用 for x, y in b.items(): 来遍历字典的每一个键和对应的值。

  • b.values() 返回的是一个包含字典中所有值的视图对象。迭代这个视图对象时,只能得到字典中的值,而不会得到键。所以你不能用 for x, y in b.values(): 来遍历,因为 b.values() 只会提供值,没有对应的键与之配对。


这道题知识点就这些啦 ,继续扩展的话,可以多刷相关的题目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值