Список сортировки данных Python по алфавиту

Я немного запутался в отношении структуры данных в python; (), [] и {}. Я пытаюсь разобраться с простым списком, возможно, потому что я не могу определить тип данных, которые я не сортирую.

Мой список прост: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

Мой вопрос - какой тип данных это и как сортировать слова по алфавиту?

Ответ 1

[] обозначает list, () обозначает tuple и {} обозначает словарь . Вы должны взглянуть на официальное руководство Python , поскольку это самые основы программирования на Python.

У вас есть список строк. Вы можете отсортировать его следующим образом:

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']

Как вы можете видеть, слова, начинающиеся с буквы в верхнем регистре, становятся предпочтительнее тех, которые начинаются с буквы нижнего регистра. Если вы хотите отсортировать их самостоятельно, сделайте следующее:

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

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

In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']

In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']

Обратите внимание:. Если вы работаете с Python 3, str - это правильный тип данных для каждой строки, содержащей текст, пригодный для человека. Однако, если вам все еще нужно работать с Python 2, вы можете иметь дело с строками unicode, которые имеют тип данных unicode в Python 2, а не str. В таком случае, если у вас есть список строк в Юникоде, вы должны написать key=unicode.lower вместо key=str.lower.

Ответ 2

В Python есть встроенная функция sorted, которая выдаст вам отсортированный список из всех повторяемых вами итераций (например, список ([1,2,3]); дикт ({1:2,3:4}, хотя он просто вернет отсортированный список ключей: набор ({1,2,3,4) или кортеж ((1,2,3,4))).

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

Списки также имеют метод sort который будет выполнять сортировку на месте (x.sort() возвращает None, но изменяет объект x).

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

Оба также принимают key аргумент, который должен быть вызываемым (функция/лямбда), который вы можете использовать, чтобы изменить то, что сортировать.
Например, чтобы получить список (key,value) -pairs из dict, который отсортирован по значению, вы можете использовать следующий код:

>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1])  # Items returns a list of '(key,value)'-pairs
[(2, 1), (3, 2), (1, 5)]

Ответ 3

Вы можете использовать встроенную функцию sorted.

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])

Ответ 4

Вы имеете дело с списком python, и сортировка выполняется так же просто, как это сделать.

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()

Ответ 5

>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a =  ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] 
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>> 

Ответ 6

ListName.sort() сортирует его по алфавиту. Вы можете добавить reverse=False/True в скобки, чтобы изменить порядок элементов: ListName.sort(reverse=False)