记录一下python中的max函数的基本使用,主要是参数key的使用
官方给出的max函数语法:
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.
其中key就可以理解为比较的标准
比如:
d = {'a': 1, 'c': 2, 'b': 3}
print(max(d, key=d.get)) # 返回结果:b
print(max(d, key=lambda x: d[x])) # 返回结果:b
这段代码的功能是:找出字典中最大value对应的key
因为python直接对字典操作的话其实用的是字典的键,因此max中的参数d获得的就是字典的键(‘a’, ‘b’, ‘c’),然后作为key指定的函数的参数,即比较标准是对应的值(即比较d.get(‘a’),d.get(‘b’),d.get(‘c’)),也就是比较各自对应的值1,2,3,最大的当然是3,所以得到的结果是3对应的key ’b’
获得字典最大的值:
d = {'a': 1, 'c': 2, 'b': 3}
print(max(d.values())) # 返回结果是3
获得字典最大的键:
d = {'a': 1, 'c': 2, 'b': 3}
print(max(d))
print(max(d.keys())) # 返回结果是c
lst = [(1,2), (10,4), (5,6)]
max_index = lst.index(max(lst, key=lambda x: x[0]))
print(max_index) # 返回结果:1
max_index = lst.index(max(lst, key=lambda x: x[1]))
print(max_index) # 返回结果:2
上面两者比较的key所指定标准不相同。拿第一个说,max中每次迭代列表lst,把(1,2), (10,4), (5,6)分别传给x,则x[0]分别得到1,10,5,最大的自然是10,对应的索引为1,即返回的结果为1,同理,第二个比较的是2,4,6,得到的索引自然是2.