max(iterable, *[, key, default]) //可传入迭代对象,求其最大值, key 按照指定的函数比较
max(arg1, arg2, *args[, key]) //可传入多个参数取最大值
刚入门python,不时的会投入 C 的思维,先用max(dict.values())
求出value的最值,再遍历一遍dict ,判断dict[key]
是否等于 value。这一点也不pythonic。
一、max的key自定义
dic = {'a': 3, 'b': 2, 'c': 5, 'd': 8}
ans = max(dic, key=lambda x: dic[x])
//ans = max(dic, key=dic.get) 2、利用dic.get方法
print(ans)
// ans = 'd'
max 的第一个参数是迭代对象,而 dict 默认迭代Key, 匿名函数冒号后面是返回值,按照返回值的内容进行比较,而最后的max返回的对象是key值。而这也就是 max函数 key 的自定义功能。
二、 如果有多个 Key 都取到了 Value 的最大值,会返回哪个 Key?
dic = {'a': 2, 'b': 8, 'c': 5, 'd': 8}
ans = max(dic, key=lambda x: dic[x])
print(ans)
//ans = 'b'
实践证明返回第一个出现的。
三、 字典按key、value排序
- 按Key排序:
sdic = sorted(dic.item(), key=lambda it: it[0], reverse=True/False)
- 按Value排序:
sdic = sorted(dic.item(), key=lambda it: it[1], reverse=True/False)
参考:
链接1