gpt4 book ai didi

基于键排序列表的python排序列表

转载 作者:太空狗 更新时间:2023-10-29 19:35:24 25 4
gpt4 key购买 nike

我有一个预定义的列表,它指示某些值的顺序:

['id','name','age','height','weight',]

(可以很长)

我想对这个列表的任何子集进行排序:

所以如果我得到 ['height','id'] 它将变成 ['id','height']

['name','weight','height'] ---> ['name','height','weight']

有没有什么方法可以使用 key 参数对 sort 函数进行排序?或者我应该使用自定义方法,如果是的话,什么方法最有效?

最佳答案

最有效的方法是创建一个从单词到订单的映射:

ordering = {word: i for i, word in enumerate(predefined_list)}

然后在排序中使用该映射:

somelist.sort(key=ordering.get)

另一种方法是在列表中使用 .index() 来扫描列表并在排序时找到每个单词的索引:

somelist.sort(key=predefined_list.index)

但这几乎不如使用ordering字典有效。

演示:

>>> predefined_list = ['id','name','age','height','weight',]
>>> ordering = {word: i for i, word in enumerate(predefined_list)}
>>> sorted(['height','id'], key=ordering.get)
['id', 'height']
>>> sorted(['name','weight','height'], key=ordering.get)
['name', 'height', 'weight']

如果预定义列表中的任何值不唯一,这两种方法将导致不同的排序顺序。 .index() 方法使用第一次出现的值作为排序值,字典方法将使用最后一次出现的值。有很多方法可以解决这个问题,例如,您可以让字典方法反向处理列表和索引。

关于基于键排序列表的python排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com