我有一个包含这样的链接的列表:
my_list = ['google.com', 'wikipedia.org/musics', 'facebook.com', 'wikipedia.org/Elon_Musk', 'fb.com']
我想首先将包含单词“wikipedia”的网址放在这个列表中,如下所示:
my_list = ['wikipedia.org/Elon_Musk', 'wikipedia.org/musics', 'facebook.com', 'google.com', 'fb.com']
谢谢,
答案 0 :(得分:1)
试试这个:
my_list = ['google.com', 'wikipedia.org/musics', 'facebook.com', 'wikipedia.org/Elon_Musk', 'fb.com']
print(list(reversed(sorted(sorted(my_list,key=lambda x: 'wikipedia' not in x),key=lambda x: len(x)))))
输出:
['wikipedia.org/Elon_Musk', 'wikipedia.org/musics', 'facebook.com', 'google.com', 'fb.com']
答案 1 :(得分:0)
如果你想对URL的每个种进行排序(按维基百科排序,然后对其他排序),你可以这样做:
sorted(my_list, key = lambda x: 'a' + x if 'wikipedia' in x else 'b' + x)
分割两种网址:维基百科的'a'
,其他网址的'b'
。 a
位于b
之前,每个子列表也会排序。打印输出
['wikipedia.org/Elon_Musk', 'wikipedia.org/musics', 'facebook.com', 'fb.com', 'google.com']
答案 2 :(得分:0)
另一种方法(只是为了记住过滤功能):
my_list = ['google.com', 'wikipedia.org/musics', 'facebook.com', 'wikipedia.org/Elon_Musk', 'fb.com']
new_list = list(filter(lambda x: 'wikipedia' in x, my_list))+list(filter(lambda x: 'wikipedia' not in x, my_list))
答案 3 :(得分:0)
如果你想要维基百科排序那么
my_list = ['google.com', 'wikipedia.org/musics', 'facebook.com', 'wikipedia.org/Elon_Musk', 'fb.com']
list(sorted(my_list, key=lambda e: "00"+e if "wikipedia" in e else e))
答案 4 :(得分:0)
使用tuple
排序,您可以首先使用以'wikipedia'
开头的字符串,然后按字母顺序断开关系。
my_list = ['google.com', 'wikipedia.org/musics',
'facebook.com', 'wikipedia.org/Elon_Musk', 'fb.com']
new_list = sorted(my_list, key= lambda url: (-url.startswith('wikipedia'), url))
['wikipedia.org/Elon_Musk', 'wikipedia.org/musics', 'facebook.com', 'fb.com', 'google.com']
答案 5 :(得分:0)
my_list = ['google.com', 'wikipedia.org/musics',
'facebook.com', 'wikipedia.org/Elon_Musk', 'fb.com']
new_list = sorted(my_list, key= lambda url: (-url.startswith('wikipedia'), url))