Как сортировать алфавиты - PullRequest
0 голосов
/ 28 июня 2019

Ввод : abcdABCD
Выход : AaBbCcDd

ms=[]

n = input()
for i in n:
    ms.append(i)
    ms.sort()
print(ms)

Это дает мне ABCDabcd.
Как отсортировать это в Python?

Ответы [ 3 ]

2 голосов
/ 28 июня 2019

Без необходимости импортировать что-либо, вы, вероятно, могли бы сделать что-то вроде этого:

arr = "abcdeABCDE"
temp = sorted(arr, key = lambda i: (i.lower(), i))
result = "".join(temp)
print(result) # AaBbCcDdEe

Ключ будет брать каждый элемент arr и сортировать его сначала в нижнем регистре, затем, если он связывается,он будет сортировать его по первоначальному значению.Он сгруппирует все похожие буквы (A с a, B с b), а затем поставит заглавную букву.

1 голос
/ 28 июня 2019

Используйте ключ сортировки:

ms = "abcdABCD"
sorted_ms = sorted(ms, key=lambda letter:(letter.upper(), letter.islower()))
# sorted_ms = ['A', 'a', 'B', 'b', 'C', 'c', 'D', 'd']
sorted_str = ''.join(sorted_ms)
# sorted_str = 'AaBbCcDd'

Почему это работает:

Вы можете указать критерии, по которым производится сортировка, используя аргумент key в функции sorted или метод list.sort() - здесь ожидаются функция или лямбда, которая принимает рассматриваемый элемент и выводит новый критерии, по которым можно отсортировать. Если этот «новый критерий» является кортежем, то первый элемент имеет приоритет - если он равен, то второй аргумент и т. Д.

Итак, лямбда, которую я здесь предоставил, возвращает 2-кортеж:

(letter.upper(), letter.islower())

letter.upper() в качестве первого элемента здесь означает, что строки будут отсортированы лексографически, но без учета регистра (так как они будут сортировать их , как если бы они были все в верхнем регистре). Затем я использую letter.islower() в качестве второго аргумента, который равен True, если буква строчная, и False в противном случае. При сортировке False предшествует True - это означает, что если вы введете заглавную букву и строчную букву, заглавная буква будет стоять первой.

0 голосов
/ 28 июня 2019

Попробуйте это:

>>>s='abcdABCD'
>>>''.join(sorted(s,key=lambda x:x.lower()))
'aAbBcCdD'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...