如何按特定顺序对列表进行排序

时间:2017-01-16 03:58:03

标签: python

我正在研究scramble排序函数,它有两个参数:

  1. 要排序的字符串列表
  2. 一个字符串,显示字母表中字母的顺序(不一定是标准排序)。
  3. 它返回根据第二个参数排序的字符串列表。

    例如:

    scramble(['abc', 'bac', 'abb'], 'cba')
    

    应该返回

    ['bac', 'abc', 'abb']
    

    此调用中的第二个参数显示用于比较目的,c< b<一个。所以以'b'开头的单词出现在以'a'开头的单词之前;并且'abc'出现在'abb'之前,因为忽略了公共前缀('ab'),'c'出现在'b'之前。

    def scramble(l : [str], ordering : str) -> [str]:
        for i in ordering:
            for h in l:
                l.sort(key = h.index(i))
                break
        return l
    

    我的代码不起作用,我只想通过列表中项目的字母索引(根据顺序)对列表进行排序。有人可以帮我修改我的代码吗?

1 个答案:

答案 0 :(得分:0)

def scramble(words, order):
    return sorted(words, key = lambda word: [order.index(char) for char in word])