python - 在闭包函数的帮助下,python中的排序优先级
问题描述
我读了一本 Python 教科书,它具有以下与排序结合使用的闭包函数。这个排序函数应该首先对属于特殊group
集合的数字进行优先排序,然后对剩余的数字进行排序:
def sort_priority(values, group):
def helper(x):
if x in group:
return (0, x)
return (1, x)
values.sort(key=helper)
numbers = [8, 3, 1, 2, 5, 4, 7, 6]
group = {2, 3, 5, 7}
sort_priority(numbers, group)
print(numbers)
输出:
[2, 3, 5, 7, 1, 4, 6, 8]
- 被传递的
x
参数的实际值在哪里?helper(x)
- 我知道Python首先比较元组中的0到0索引,然后是1到1索引等;但不太确定在这种情况下如何比较使用返回的元组。
解决方案
sort() 中的关键参数需要一个函数,并将该函数应用于每个正在排序的列表元素。在您的示例中,值的每个元素都传递给 helper(),然后检查该元素是否在组中。然后排序比较元组列表,第一个元素为 0 的元组总是排在第一个元素为 1 的元组之前。
来源: https ://wiki.python.org/moin/HowTo/Sorting#Key_Functions
推荐阅读
- python - builtin_function_or_method' 对象不能使用 os.walk 进行迭代
- javascript - 当我尝试从 package.json 安装包时,NPM 崩溃
- r - Extract Values From Specific Rows/Cols and add to another
- android - 如何使标签占据全宽?[com.google.android.material.tabs.TabLayout]
- python-3.x - 制作不同颜色的线图标记
- xml - 使用“servant-client”和“servant-xml”解析 XML 响应
- android - 如何在 UI 测试中检查当前 Activity
- asp.net-mvc - ASP.NET MVC 中的路由交换
- reactjs - 如何在自定义验证器中使用 PropType 内置函数?
- javascript - 如何在 JavaScript 中的嵌入式 HTML 中创建 if 语句以显示 CSS 类