Structura de date Python sortează lista în ordine alfabetică (Programare, Python, Lista, Sortare, Alfabetic)

icypy a intrebat.

Sunt un pic confuz în ceea ce privește structura de date în python; (),[], și {}. Încerc să sortez o listă simplă, probabil din moment ce nu pot identifica tipul de date nu reușesc să o sortez.

Lista mea este simplă: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

Întrebarea mea este ce tip de date este acesta și cum să sortez cuvintele în ordine alfabetică?

Comentarii

  • Dacă doriți să sortați lista, atunci puteți folosi „list=[‘Stem’, ‘constituie’, ‘Sedge’, ‘Eflux’, ‘Whim’, ‘Intrigue’] list.sort() print list” . –  > Por kannanrbk.
  • [] include tipul de date construit list, (a se vedea tutorialspoint.com/python/python_lists.htm). Listele sunt doar grupuri de valori (ele pot conține alte obiecte iterabile – adică liste imbricate). () include tipul de tip „builtin tuple. Ele sunt imuabile (nu pot fi modificate). (a se vedea tutorialspoint.com/python/python_tuples.htm). Și {} înglobează builtinul dictionary. Face o paralelă cu un dicționar (pentru cuvinte), unde o „cheie” ar fi cuvântul, iar „valoarea” este definiția. (a se vedea tutorialspoint.com/python/python_dictionary.htm). –  > Por Rushy Panchal.
6 răspunsuri
pemistahl

[] denotă un lista, () denotă un tuple și {} reprezintă un dicționar. Ar trebui să aruncați o privire la tutorialul oficial Python deoarece acestea sunt elementele de bază ale programării în Python.

Ceea ce aveți este o listă de șiruri de caractere. O puteți sorta astfel:

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

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

După cum puteți vedea, cuvintele care încep cu majuscule au prioritate față de cele care încep cu minuscule. Dacă doriți să le sortați în mod independent, faceți astfel:

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

De asemenea, puteți sorta lista în ordine inversă, procedând astfel:

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']

Vă rugăm să rețineți: Dacă lucrați cu Python 3, atunci str este tipul de date corect pentru fiecare șir de caractere care conține text lizibil pentru oameni. Cu toate acestea, dacă trebuie să lucrați în continuare cu Python 2, atunci s-ar putea să aveți de-a face cu șiruri unicode care au tipul de date unicode în Python 2, și nu str. În acest caz, dacă aveți o listă de șiruri unicode, trebuie să scrieți key=unicode.lower în loc de key=str.lower.

Comentarii

  • Utilizând al doilea exemplu pe un pymongo find_one() de la o bază de date MongoDB, primesc o eroare: descriptor 'lower' requires a 'str' object but received a 'unicode'. Rezultatul este o matrice de șiruri de caractere și este implementat astfel: results['keywords'] = sorted(keywords['keywords'], key=str.lower). Știe cineva cum se poate rezolva acest lucru? –  > Por user1063287.
  • @user1063287 Scuze pentru răspunsul meu întârziat. În cazul tău, trebuie să scrii key=unicode.lower în loc de key=str.lower. Acest lucru se datorează faptului că aveți de-a face cu șiruri unicode, nu cu șiruri de octeți. Vă rugăm să consultați pagina oficială Unicode HOWTO pentru informații suplimentare în acest sens, în special pentru diferențele respective dintre Python 2 și 3. –  > Por pemistahl.
Teo Klestrup Röijezon

Python are o funcție încorporată numită sorted, care vă va oferi o listă sortată din orice iterabil pe care îl introduceți (cum ar fi o listă ([1,2,3]); un dict ({1:2,3:4}, deși va returna doar o listă sortată a cheilor; un set ({1,2,3,4); sau o tupla ((1,2,3,4))).

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

Listele au, de asemenea, o funcție sort care va efectua sortarea pe loc (x.sort() returnează None, dar modifică obiectul x).

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

De asemenea, ambele liste acceptă un parametru key argument, care ar trebui să fie un apelabil (funcție/lambda) pe care îl puteți utiliza pentru a schimba criteriul de sortare.
De exemplu, pentru a obține o listă de (key,value)perechi dintr-un dict care este sortat în funcție de valoare, puteți utiliza următorul cod:

>>> 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)]

Bryan

Aveți de-a face cu o listă python, iar sortarea ei este la fel de simplă ca și cum ați face acest lucru.

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

Fatih Erikli

Puteți utiliza built-in sorted funcție.

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

Crafter0800

ListName.sort() o va sorta în ordine alfabetică. Puteți adăuga reverse=False/True în paranteze pentru a inversa ordinea elementelor: ListName.sort(reverse=False)

Comentarii

  • Acesta este un comentariu pentru Ruby? –  > Por aljabear.
Abhijeet Rastogi
>>> 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']
>>>