Список сортировки данных 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)