Я немного запутался в отношении структуры данных в Python; ()
, []
и {}
. Я пытаюсь отсортировать простой список, возможно, так как я не могу определить тип данных, я не могу его отсортировать.
Мой список прост: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
У меня вопрос, что это за тип данных и как сортировать слова по алфавиту?
python
list
sorting
alphabetical
icypy
источник
источник
[]
включает встроенный тип данныхlist
(см. tutorialspoint.com/python/python_lists.htm ). Списки - это просто группы значений (они могут содержать другие итерируемые объекты, то есть вложенные списки).()
огибает встроенную командуtuple
. Они неизменны (не могут быть изменены). (см. tutorialspoint.com/python/python_tuples.htm ). И{}
заключает в себе встроенныйdictionary
. Параллели со словарем (для слов), где «ключом» будет слово, а «значением» является определение. (см. tutorialspoint.com/python/python_dictionary.htm ).Ответы:
[]
обозначает список ,()
обозначает кортеж и{}
обозначает словарь . Вы должны взглянуть на официальный учебник по Python, так как это самые основы программирования на Python.То, что у вас есть, это список строк. Вы можете отсортировать это так:
Как видите, слова, начинающиеся с заглавной буквы, имеют преимущество перед словами, начинающимися со строчной буквы. Если вы хотите отсортировать их самостоятельно, сделайте это:
Вы также можете отсортировать список в обратном порядке, выполнив это:
Обратите внимание: если вы работаете с Python 3, то
str
это правильный тип данных для каждой строки, содержащей текст, читаемый человеком. Однако, если вам все еще нужно работать с Python 2, вы можете иметь дело со строками Unicode, которые имеют тип данныхunicode
в Python 2, а не сstr
. В таком случае, если у вас есть список строк Unicode, вы должны написатьkey=unicode.lower
вместоkey=str.lower
.источник
find_one()
результате из базы данных MongoDB, я получаю сообщение об ошибке:descriptor 'lower' requires a 'str' object but received a 'unicode'
. Результатом является массив строк и реализована следующим образом:results['keywords'] = sorted(keywords['keywords'], key=str.lower)
. Кто-нибудь знает, как решить эту проблему?key=unicode.lower
вместоkey=str.lower
. Это потому, что вы имеете дело со строками Unicode, а не байтовыми строками. Пожалуйста, обратитесь к официальному Unicode HOWTO для получения дополнительной информации об этом, особенно о соответствующих различиях между Python 2 и 3.В Python есть встроенная функция с именем
sorted
, которая даст вам отсортированный список из любой итерируемой вами системы (например, list ([1,2,3]
); dict ({1:2,3:4}
хотя он просто вернет отсортированный список ключей; set ({1,2,3,4
) или кортеж ((1,2,3,4)
)).Списки также имеют
sort
метод, который будет выполнять сортировку на месте (x.sort () возвращает None, но изменяет объект x).Оба также принимают
key
аргумент, который должен быть вызываемым (функция / лямбда), который вы можете использовать, чтобы изменить то, что сортировать.Например, чтобы получить список
(key,value)
-пар из dict, который отсортирован по значению, вы можете использовать следующий код:источник
Вы имеете дело со списком питонов, и сортировать его так же просто, как и делать это.
источник
Вы можете использовать встроенную
sorted
функцию.источник
ListName.sort()
отсортируем по алфавиту. Вы можете добавитьreverse=False/True
в скобках, чтобы изменить порядок элементов:ListName.sort(reverse=False)
источник
источник