Introduction à la programmation Python (016) - Opérations de dictionnaire (3) : Tri par dictionnaire
Table des matières
1. Fonction triée()
La fonction sorted() peut trier un objet itérable en fonction de la fonction fournie et des indicateurs d'ordre croissant et décroissant. Le format syntaxique de la fonction sorted() est le suivant :
sorted(可迭代对象, key = 函数名, reverse = False/True)
illustrer:
Touche (1) : Définir la base de tri. Habituellement, vous pouvez renvoyer la base de tri par fonction, puis lier le nom de la fonction à la clé.
(2)inverse : sens de tri. La valeur par défaut est False, indiquant l'ordre croissant. Lorsqu'il est défini sur True, il indique l'ordre décroissant.
Par exemple:
test = ["107","88","211","985","1234","6879","55"]
print(sorted(test)) # 按照字符串升序排列
print(sorted(test, key=int)) # 按照整数升序排列
print(sorted(test, key=lambda x:int(x))) # 按照整数升序排列
print(sorted(test, key=int, reverse=True)) # 按照整数降序排列
lang = ["Java","Python","JavaScript","C#","PHP"]
print(sorted(lang))
print(sorted(lang,key=len)) # 按字符串长度排序
print(sorted(lang,key=lambda x:len(x),reverse=True)) # 按字符串长度降序排列
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
['107', '1234', '211', '55', '6879', '88', '985']
['55', '88', '107', '211', '985', '1234', '6879']
['55', '88', '107', '211', '985', '1234', '6879']
['6879', '1234', '985', '211', '107', '88', '55']
['C#', 'Java', 'JavaScript', 'PHP', 'Python']
['C#', 'PHP', 'Java', 'Python', 'JavaScript']
['JavaScript', 'Python', 'Java', 'PHP', 'C#']
2. Triez directement le dictionnaire
Utilisez la fonction sorted() pour trier directement le dictionnaire. Après le tri, une liste contenant uniquement les clés du dictionnaire est générée. Les clés par défaut sont par ordre croissant. Si vous souhaitez trier les clés par ordre décroissant, définissez le paramètre reverse sur True.
Par exemple:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test)
print(type(item1))
print(item1)
print(sorted(test,reverse=True)) # 降序排列
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
[12, 27, 35, 88, 102, 125]
[125, 102, 88, 35, 27, 12]
3. Trier les clés ou valeurs du dictionnaire
Trier les clés ou valeurs du dictionnaire. Après le tri, une liste contenant uniquement les clés ou valeurs du dictionnaire sera générée. Par défaut, la liste est triée par ordre croissant. Si vous souhaitez trier les clés dans par ordre décroissant, définissez le paramètre reverse sur True.
Par exemple:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test.keys()) # 按字典的键排序
print(type(item1))
print(item1)
item2 = sorted(test.values()) # 按字典的值排序
print(type(item2))
print(item2)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
[12, 27, 35, 88, 102, 125]
<class 'list'>
['Black', 'Jack', 'Jerry', 'Mark', 'Tom', 'White']
4. Triez les paires clé-valeur (éléments) du dictionnaire
(1) Lors du tri des paires clé-valeur (éléments) du dictionnaire, la valeur par défaut est de trier par clé dans l'ordre croissant (si vous souhaitez trier par clé dans l'ordre décroissant, définissez le paramètre reverse sur True) et de générer un liste contenant des clés et des valeurs. Les clés et les valeurs sont présentées sous forme de tuples.
Par exemple:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test.items()) # 按字典的键排序
print(type(item1))
print(item1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
[(12, 'Tom'), (27, 'Black'), (35, 'White'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark')]
(2) Si vous souhaitez trier par la valeur du dictionnaire, vous pouvez utiliser la fonction anonyme lambda pour définir le dictionnaire de tri sur la valeur.
Par exemple:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
item1 = sorted(test.items(),key=lambda x:x[1]) # 按字典的值排序
print(type(item1))
print(test)
print(item1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
<class 'list'>
{
12: 'Tom', 102: 'Jerry', 88: 'Jack', 125: 'Mark', 27: 'Black', 35: 'White'}
[(27, 'Black'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark'), (12, 'Tom'), (35, 'White')]
5. Convertir le dictionnaire en liste pour le tri
Convertissez les paires clé-valeur du dictionnaire en liste, puis triez-les à l'aide de la fonction sorted() ou sort() et de la fonction lambda.
Par exemple:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
list1 = list(test.items())
print(sorted(list1,key=lambda x:x[1]))
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
[(27, 'Black'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark'), (12, 'Tom'), (35, 'White')]
Après la conversion en liste, vous pouvez utiliser la méthode sort() de la liste pour trier.
Par exemple:
test = {
12:"Tom",102:"Jerry",88:"Jack",125:"Mark",27:"Black",35:"White"}
list1 = list(test.items())
list1.sort(key=lambda x:x[1])
print(list1)
运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
[(27, 'Black'), (88, 'Jack'), (102, 'Jerry'), (125, 'Mark'), (12, 'Tom'), (35, 'White')]