Je suis un peu confus en ce qui concerne la structure des données en python; ()
, []
et {}
. J'essaie de trier une liste simple, probablement parce que je ne peux pas identifier le type de données que je ne parviens pas à trier.
Ma liste est simple: ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
Ma question est de savoir quel type de données il s'agit, et comment trier les mots par ordre alphabétique?
python
list
sorting
alphabetical
glace
la source
la source
[]
renferme le type de données intégrélist
, (voir tutorialspoint.com/python/python_lists.htm ). Les listes ne sont que des groupes de valeurs (elles peuvent contenir d'autres objets itérables, c'est-à-dire des listes imbriquées).()
renferme le fichier intégrétuple
. Ils sont immuables (ne peuvent pas être modifiés). (voir tutorialspoint.com/python/python_tuples.htm ). Et{}
renferme le fichier builtindictionary
. Parallèles avec un dictionnaire (pour les mots), où une «clé» serait le mot et la «valeur» serait la définition. (voir tutorialspoint.com/python/python_dictionary.htm ).Réponses:
[]
désigne une liste ,()
désigne un tuple et{}
désigne un dictionnaire . Vous devriez jeter un œil au didacticiel officiel Python car ce sont les bases de la programmation en Python.Ce que vous avez est une liste de chaînes. Vous pouvez le trier comme ceci:
Comme vous pouvez le voir, les mots commençant par une lettre majuscule ont la préférence sur ceux commençant par une lettre minuscule. Si vous souhaitez les trier indépendamment, procédez comme suit:
Vous pouvez également trier la liste dans l'ordre inverse en procédant comme suit:
Remarque: si vous travaillez avec Python 3,
str
le type de données est-il correct pour chaque chaîne contenant du texte lisible par l'homme. Cependant, si vous devez toujours travailler avec Python 2, vous pouvez utiliser des chaînes Unicode qui ont le type de donnéesunicode
dans Python 2, et nonstr
. Dans un tel cas, si vous avez une liste de chaînes Unicode, vous devez écrire à lakey=unicode.lower
place dekey=str.lower
.la source
find_one()
résultat à partir d' une base de données MongoDB, je reçois l' erreur:descriptor 'lower' requires a 'str' object but received a 'unicode'
. Le résultat est un tableau de chaînes et mis en œuvre comme ceci:results['keywords'] = sorted(keywords['keywords'], key=str.lower)
. Quelqu'un sait-il comment résoudre ce problème?key=unicode.lower
au lieu dekey=str.lower
. Cela est dû au fait que vous avez affaire à des chaînes Unicode et non à des chaînes d'octets. Veuillez vous référer au HOWTO Unicode officiel pour plus d'informations à ce sujet, en particulier pour les différences respectives entre Python 2 et 3.Python a une fonction intégrée appelée
sorted
, qui vous donnera une liste triée à partir de tout itérable que vous alimentez (comme une liste ([1,2,3]
); un dict ({1:2,3:4}
, bien qu'il ne renverra qu'une liste triée des clés; un set ({1,2,3,4
) ; ou un tuple ((1,2,3,4)
)).Les listes ont également une
sort
méthode qui effectuera le tri sur place (x.sort () renvoie None mais modifie l'objet x).Les deux acceptent également un
key
argument, qui devrait être un appelable (fonction / lambda) que vous pouvez utiliser pour modifier les éléments de tri.Par exemple, pour obtenir une liste de
(key,value)
paires à partir d'un dict qui est trié par valeur, vous pouvez utiliser le code suivant:la source
Vous avez affaire à une liste python, et la trier est aussi simple que de le faire.
la source
Vous pouvez utiliser la
sorted
fonction intégrée.la source
ListName.sort()
le triera par ordre alphabétique. Vous pouvez ajouterreverse=False/True
entre parenthèses pour inverser l'ordre des éléments:ListName.sort(reverse=False)
la source
la source