将元素移动到列表末尾

2024-10-04 05:32:16 发布

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

我想解决两个关于用python排序列表的问题。你知道吗

1)在我的列表中,有一个元素以"noname"开头,后面有一个数字,如"noname3""noname4"(每个列表只包含一个noname+number

这个noname集合了所有的nonames,并且它后面的数字显示了有多少nonames。你知道吗

我的问题是如何将这个noname+integer元素发送到末尾?你知道吗

2)如下所示,sorted函数将首先对英语进行排序,然后对韩语进行排序。有没有办法让我先把韩语排序,然后再把英语排序?当然'noname'最后。你知道吗

names =  ['Z', 'C', 'A B', 'noname3', 'ㄴ', 'ㄱ', 'D A', 'A A' , 'ㄷ']
sorted(names)

# Output
['A A', 'A B', 'C', 'D A','noname3', 'Z', 'ㄱ', 'ㄴ', 'ㄷ']

# Desired Output
[ 'ㄱ', 'ㄴ', 'ㄷ', 'A A', 'A B', 'C', 'D A', 'Z', 'noname3']

Tags: 函数元素number列表outputnames排序数字
2条回答

在不知道韩国语字符的字母顺序的情况下,下面是我的尝试(基于@kindall的开始)。注意,可以将自定义函数传递到sorter的key参数中

def sorter(char):
    #Place english characters after Korean
    if ord(char[0])>122:
        return ord(char[0])-12000
    else:
        return ord(char[0])+12000

lst=['Z', 'C', 'A B', 'noname3', 'ㄴ', 'ㄱ', 'D A', 'A A' , 'ㄷ']

sorted(lst, key=lambda x: (x.startswith('noname'),sorter(x)))

['ㄱ', 'ㄴ', 'ㄷ', 'A B', 'A A', 'C', 'D A', 'Z', 'noname3']

使用key函数对noname项进行排序,使其高于非noname项。你知道吗

sorted(names, key=lambda x: (x.startswith("noname"), x))

相关问题 更多 >