Estou um pouco confuso em relação à estrutura de dados em python; ()
,, []
e {}
. Estou tentando classificar uma lista simples, provavelmente porque não consigo identificar o tipo de dados em que não estou conseguindo classificá-los.
Minha lista é simples: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
Minha pergunta é que tipo de dados são esses e como classificar as palavras em ordem alfabética?
python
list
sorting
alphabetical
gelado
fonte
fonte
[]
inclui o tipo de dados internolist
(consulte tutorialspoint.com/python/python_lists.htm ). As listas são apenas grupos de valores (elas podem conter outros objetos iteráveis - ou seja, listas aninhadas).()
inclui o builtintuple
. Eles são imutáveis (não podem ser alterados). (consulte tutorialspoint.com/python/python_tuples.htm ). E{}
inclui o builtindictionary
. Paralelos com um dicionário (para palavras), onde uma 'chave' seria a palavra e 'valor' é a definição. (consulte tutorialspoint.com/python/python_dictionary.htm ).Respostas:
[]
indica uma lista ,()
indica uma tupla e{}
indica um dicionário . Você deve dar uma olhada no tutorial oficial do Python, pois esses são os princípios básicos da programação em Python.O que você tem é uma lista de strings. Você pode classificar assim:
Como você pode ver, as palavras que começam com uma letra maiúscula têm preferência sobre as que começam com uma letra minúscula. Se você deseja classificá-los independentemente, faça o seguinte:
Você também pode classificar a lista na ordem inversa, fazendo o seguinte:
Observação: se você trabalha com Python 3,
str
é o tipo de dados correto para cada string que contém texto legível por humanos. No entanto, se você ainda precisar trabalhar com o Python 2, poderá lidar com cadeias unicode que têm o tipo de dadosunicode
no Python 2, e nãostr
. Nesse caso, se você tiver uma lista de cadeias unicode, deverá escrever emkey=unicode.lower
vez dekey=str.lower
.fonte
find_one()
resultado de um banco de dados MongoDB, recebo erro:descriptor 'lower' requires a 'str' object but received a 'unicode'
. O resultado é uma matriz de strings e implementada assim:results['keywords'] = sorted(keywords['keywords'], key=str.lower)
. Alguém sabe como resolver isso?key=unicode.lower
vez dekey=str.lower
. Isso ocorre porque você está lidando com seqüências unicode, não com bytes. Consulte o oficial Unicode HOWTO para mais informações sobre isso, especialmente para as respectivas diferenças entre Python 2 e 3.O Python possui uma função interna chamada
sorted
, que fornecerá uma lista classificada de qualquer iterável que você alimentar (como uma lista ([1,2,3]
); um dict ({1:2,3:4}
, embora apenas retorne uma lista classificada das chaves; um set ({1,2,3,4
)) ; ou uma tupla ((1,2,3,4)
)).As listas também têm um
sort
método que executará a classificação no local (x.sort () retorna None, mas altera o objeto x).Ambos também aceitam um
key
argumento, que deve ser chamado (função / lambda) que você pode usar para alterar o que classificar.Por exemplo, para obter uma lista de
(key,value)
pares de um ditado classificado por valor, você pode usar o seguinte código:fonte
Você está lidando com uma lista python e classificá-la é tão fácil quanto fazer isso.
fonte
Você pode usar a
sorted
função interna.fonte
ListName.sort()
irá classificá-lo em ordem alfabética. Você pode adicionarreverse=False/True
colchetes para reverter a ordem dos itens:ListName.sort(reverse=False)
fonte
fonte