Maison >développement back-end >Tutoriel Python >Les dictionnaires Python peuvent-ils être triés ?

Les dictionnaires Python peuvent-ils être triés ?

anonymity
anonymityoriginal
2019-06-14 11:25:038507parcourir

En Python, le dictionnaire est un type de données intégré, une structure de stockage non ordonnée, et chaque élément est une paire clé-valeur.

Les dictionnaires Python peuvent-ils être triés ?

Par exemple : dict = {'username' : 'xiaoming', 'password' : '123456'}, où 'username' et 'password' sont des clés, et « Xiaoming » et « 123456 » sont des valeurs. Vous pouvez obtenir la référence à la valeur correspondante via d[key], mais vous ne pouvez pas obtenir la clé via value.

Pour le dictionnaire, vous devez connaître les points suivants :

a La clé du dictionnaire est sensible à la casse

b. il ne peut pas y avoir de clés en double ;

c. Les dictionnaires ne sont pas ordonnés et n'ont aucune notion d'ordre des éléments. Ce ne sont que de simples arrangements de paires d'ordre.

Le dictionnaire est trié par clé/valeur :

Le dictionnaire lui-même n'a aucune notion d'ordre, mais il l'est toujours à un moment donné, mais nous avons souvent besoin de trier par dictionnaire

Méthode 1 : trier par valeur clé.

def sortedDictValues1(adict):
    items = adict.items()
    print "items:",items 
    items.sort()
    return [value for key, value in items]
adict = {"a1":11,"b1":2,"c1":30,"e1":20,"d1":4}
print sortedDictValues1(adict)
items: [('a1', 11), ('c1', 30), ('e1', 20), ('b1', 2), ('d1', 4)]
[11, 2, 30, 4, 20]

La méthode items du dictionnaire renverra une liste de tuples, où chaque tuple contient une paire d'éléments - une clé et une valeur correspondante. Une liste de tuples peut être triée à l’aide de la méthode sort().

Méthode 2 : Trier par valeur clé

def sortedDictValues2(adict): 
    keys = adict.keys() 
    keys.sort() 
    return [dict[key] for key in keys]

La méthode keys() de l'objet dictionnaire renvoie une liste de toutes les valeurs clés du dictionnaire, et le la commande est aléatoire. Lorsque vous avez besoin de trier, utilisez simplement la méthode sort() sur la liste de valeurs clés renvoyée, qui est plus rapide que la méthode 1.

Méthode 3 : Trier par valeur clé

def sortedDictValues3(adict): 
    keys = adict.keys() 
    keys.sort() 
    return map(adict.get, keys)

Utilisez la méthode de mappage pour effectuer la dernière étape plus efficacement

Méthode 4 : Une Instruction de ligne

[(k,di[k]) for k in sorted(di.keys())]

Méthode 5 : Trier par valeur

def sort_by_value(d): 
    items=d.items() 
    backitems=[[v[1],v[0]] for v in items] 
    backitems.sort() 
    return [ backitems[i][1] for i in range(0,len(backitems))]

Échangez d'abord la clé et la valeur de l'élément dans une liste, puis selon la liste chacun La première valeur de l'élément, c'est-à-dire la valeur d'origine, est triée :

Méthode 6 : Trier par valeur

[ v for v in sorted(di.values())]

Méthode 7 : Utiliser la fonction triée key= tri des paramètres :

Trier par clé

print sorted(dict1.items(), key=lambda d: d[0])

Trier par valeur

print sorted(dict1.items(), key=lambda d: d[1])
python内置sorted函数的帮助文档:
sorted(…)
sorted(iterable, cmp=None, key=None, reverse=False) –> new sorted list

Méthode de tri par dictionnaire, en fait, leurs idées principales sont les mêmes , c'est-à-dire dictionnaire Les éléments de sont séparés en une liste et la liste est triée, triant ainsi indirectement le dictionnaire. Cet « élément » peut être une clé, une valeur ou un élément.

Méthode 8 : série COLLECTION de PYTHON - dictionnaire ordonné (ORDEREDDICT)

orderdDict est un complément au type de dictionnaire, qui préserve l'ordre dans lequel les éléments du dictionnaire sont ajoutés

import collections
dic = collections.OrderedDict()
dic["featureName"] = "f1"
dic["uId"] = "12345"
dic["value"] = "7"
print dic
#结果
#OrderedDict([('featureName', 'f1'), ('uId', '12345'), ('value', '7')])

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn