在 Python 中,key 参数通常用于排序、查找最大值/最小值等操作中,它指定了一个函数,用于从每个元素中提取用于比较的“键”。
以下是关于 key 参数在 Python 中常见用法的详细解释和示例:
sorted() 函数中的 key
sorted() 函数可以对列表、元组等可迭代对象进行排序,通过 key 参数,你可以自定义排序规则。
示例 1:按字符串长度排序
words = ["apple", "banana", "kiwi", "strawberry"] # 默认按字母顺序排序 print(sorted(words)) # 输出: ['apple', 'banana', 'kiwi', 'strawberry'] # 按字符串长度排序 print(sorted(words, key=len)) # 输出: ['kiwi', 'apple', 'banana', 'strawberry']
示例 2:按字典的某个值排序
students = [
{"name": "Alice"
;, "age": 25},
{"name": "Bob", "age": 20},
{"name": "Charlie", "age": 22}
]
# 按年龄从小到大排序
sorted_students = sorted(students, key=lambda x: x["age"])
print(sorted_students)
# 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'Alice', 'age': 25}]
max() 和 min() 函数中的 key
max() 和 min() 函数可以使用 key 参数来指定比较的依据。
示例 3:找出最长的字符串
words = ["apple", "banana", "kiwi", "strawberry"] # 默认找出字典序最大的字符串 print(max(words)) # 输出: 'strawberry' # 找出长度最长的字符串 print(max(words, key=len)) # 输出: 'strawberry'
示例 4:找出年龄最大的学生
students = [ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 20}, {"name": "Charlie", "age": 22} ] # 找出年龄最大的学生 oldest_student = max(students, key=lambda x: x["age"]) print(oldest_student) # 输出: {'name': 'Alice', 'age': 25}
list.sort() 方法中的 key
list.sort() 是列表的原地排序方法,同样支持 key 参数。
示例 5:按元组的第二个元素排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three')] # 按元组的第二个元素(字符串)排序 pairs.sort(key=lambda x: x[1]) print(pairs) # 输出: [(1, 'one'), (3, 'three'), (2, 'two')]
自定义排序规则
你可以使用 lambda 函数或自定义函数作为 key 参数,实现更复杂的排序逻辑。
示例 6:按自定义规则排序
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 按数字的个位数排序 numbers.sort(key=lambda x: x % 10) print(numbers) # 输出: [10, 1, 2, 3, 4, 5, 6, 7, 8, 9]
key 参数的原理
key参数接受一个函数,该函数会被应用于可迭代对象中的每个元素。- 排序或比较时,Python 会根据
key函数返回的值进行比较,而不是直接使用原始元素。 key函数返回的值相同,则保持原始顺序(稳定排序)。
key参数允许你自定义排序、查找最大值/最小值的规则。- 常见的用法包括
sorted(),max(),min(), 和list.sort()。 - 可以使用
lambda函数或自定义函数作为key参数。
希望这些示例能帮助你更好地理解和使用 Python 中的 key 参数!如果有更多问题,欢迎继续提问。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/478687.html



