2016-11-23 2 views
0
Str1=["Josephine","Joseph smith"] 

Жозефина должна на первом месте, но из-за космоса на первом месте стоит Джозеф Куз.Как отсортировать список строк, игнорирующих пробелы в python?

+1

Это не дубликат: он показывает, как удалить пробелы, но не так, как использовать его в качестве основы для ключа сортировки. –

ответ

9

Что вы описываете:

>>> Str1 = ['Josephine', 'Joseph smith'] 
>>> sorted(Str1) 
['Joseph smith', 'Josephine'] 

Вы можете обеспечить key к list.sort или sorted, чтобы сделать ваши сравнения строк игнорируют пробелы:

>>> sorted(Str1, key=lambda x: ''.join(x.split())) 
['Josephine', 'Joseph smith'] 
+1

Скорее запутанный способ удаления пробелов, также заменит символы новой строки, которые могут быть нежелательными, почему бы просто не использовать 'replace()'? –

+1

@Chris_Rands [whitespace] (https://en.wikipedia.org/wiki/Whitespace_character) включает в себя символы новой строки (и вкладки), и именно этот вопрос явно просит игнорировать в заголовке. –

+0

@ZeroPiraeus Хорошо, я согласен –

2

Вы передаете в качестве ключа сортировки, который заменяет весь пробел с пустой строкой:

Str1.sort(key=lambda k: k.replace(' ', '')) 
0

Вы можете сделать это следующим образом:

l = sorted(l, key=lambda x:x.replace(' ', '')) 
+0

Просто 'sorted (my_string, key = lambda x: x.replace ('', ''))' is fine –

+0

@ZeroPiraeus вы правы! Отредактировал мой ответ, спасибо! – neverwalkaloner

Смежные вопросы