Python:排序函数的参数

2024-10-03 17:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对python字符串列表进行排序。我知道我可以使用sorted方法并将attribute key设置为一个函数,该函数实现对字典元素进行排序所需的行为。我的问题是这个方法需要一个参数。在

更新: 我希望这个方法可以推广到多个参数。在

示例: 我想根据字符串在两个字典中的优先级排序。所以我需要用那些优先字典来排序。在

我想要这样的东西:

sorted(myList, key=sortingAlgorithm(priorityDictionary1, priorityDictionary2), reverse=True) 

如果我将优先级字典设置为全局变量,那么就不需要将它作为排序算法的参数。但是,我想在没有全局变量的情况下也能做到。在

如果这是不可能的,你能推荐一下Python的方法吗。在

提前谢谢。在


Tags: 方法key函数字符串元素示例列表参数
3条回答

使用闭合。在

def something(foo):
  def somethingsomething(bar):
    return foo(bar)
  return somethingsomething

baz = something(len)
print baz('quux')

尝试key=priorityDictionary.get

get是字典上的一个方法,它接受一个键并返回一个值(如果找到)。在

编辑:上面的解决方案适用于单个dict的情况。这里是一个推广,其中priorityDict2的值是priorityDict1的键。在

{padrian6>你可以使用嵌套的cdriac}来排序:

output = sorted(myList, key=lambda element: priorityDict1[priorityDict2[element]])

代码-

priorities = {'xyz' : 1, 'cde' : 3, 'abc' : 4, 'pqr' : 2}

arr = ['abc', 'cde', 'pqr', 'xyz', 'cde', 'abc']

arr.sort(key = lambda s : priorities[s])

print(arr)

输出-

^{pr2}$

相关问题 更多 >