169. 多数元素-方法2(力扣)

题目描述:
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:nums = [3,2,3]
输出:3

示例 2:
输入:nums = [2,2,1,1,1,2,2]
输出:2

import collections
'''
collections是Python内建的一个集合模块,
提供了许多有用的集合类。该模块实现了专门的容器数据类型,
提供了Python的通用内置容器,dict,list,set和tuple的替代方法。
在内置数据类型(dict、list、set、tuple)的基础上,
collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等
'''

class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        # your code here
        counts = collections.Counter(nums)#
        print(counts)#Counter({6: 5, 3: 2, 2: 1})
        print(counts.keys())#dict_keys([3, 2, 6])
        #return max(counts.keys(), key=counts.get)#此句ok
        return max(counts, key=counts.get)  # 获得value最大的 对应的key值   也ok

nums = [3,2,3,6,6,6,6,6]
a=Solution().majorityElement(nums)
print(a)#输出6

总结:
1.Counter: 计数器,主要用来计数
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value(可以认为Counter直接生成一个Hash表,这一点在处理问题时经常用到)。
计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。
c = Counter(‘abcdeabcdabcaba’)print c
输出:Counter({‘a’: 5, ‘b’: 4, ‘c’: 3, ‘d’: 2, ‘e’: 1})
2.
代码:
a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)
输出 m为3
为什么这返回与最大值对应的键?
字典“a”是python中的一个可迭代的结构。当您在a中循环使用x时,您将循环使用字典中的键。
在第二行中,max函数有两个参数:一个可迭代对象(a)和一个可选的“key”函数。 Key功能将用于评估a中最大的项目的值。
max(a,key = a.get)将返回一个a.get(item)的值最大的项。即对应于最大值的键是3。

总结:
1、key后面是函数
2、max遍历dict的值,取最大
3、key后面的函数通过这个值去查找对应的键
4、不加key这个函数的话,默认遍历的是字典的key,最后输出最大的键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值