Maison > développement back-end > Tutoriel Python > Dictionnaire Python : Y a-t-il un gameplay avancé que je ne sais pas faire ?

Dictionnaire Python : Y a-t-il un gameplay avancé que je ne sais pas faire ?

WBOY
Libérer: 2023-04-11 23:58:08
avant
1593 Les gens l'ont consulté

Dictionnaire Python : Y a-t-il un gameplay avancé que je ne sais pas faire ?


Générer un dictionnaire à partir d'une séquence

Nous convertissons la séquence suivante en type dict.

lst = [('a', 1), ('b', 2), ('c', 3)]
Copier après la connexion

Méthode d'écriture commune

for k, v in lst:
dic[k] = v
Copier après la connexion

Méthode d'écriture plus pythonique

Utilisez la dérivation de dictionnaire pour générer rapidement un dictionnaire.

{k: v for k, v in lst}
Copier après la connexion

Valeur par défaut de la clé

Lorsque la clé spécifiée n'existe pas, définissez la valeur sur 0.

Manière d'écriture courante

if key not in dct:
dct[key] = 0
Copier après la connexion

Manière d'écriture pythonique

dct[key] = dct.get(key, 0)
Copier après la connexion

Clé et valeur d'échange

Manière d'écriture ordinaire

dic = {'Python': 1, 'Java': 2}
new_dic = {}
for k, v in dic.items():
new_dic[v] = k
Copier après la connexion

Manière d'écriture plus pythonique

dic = {'Python': 1, 'Java': 2}
new_dic = {v: k for k, v in dic.items()}

Copier après la connexion

Modification et initialisation de séquence

Données d'échantillon

lst = [('a', 1), ('b', 2), ('c', 3)]
dic = {'a': [0]}
Copier après la connexion

Si nous vous devez le faire en fonction de lst. Mettez à jour les données dans dic. Lorsque la clé existe, ajoutez la valeur à la fin de la séquence d'origine. Sinon, initialisez la valeur et enregistrez-la avec la séquence.

Méthode d'écriture normale

for key, value in lst:
if key in dic:
dic[key].append(value)
else:
dic[key] = [value]
Copier après la connexion

Méthode d'écriture plus pythonique

for (key, value) in lst:
group = dic.setdefault(key, [])
group.append(value)
# dic:{'a': [0, 1], 'b': [2], 'c': [3]}
Copier après la connexion

setdefault(key, default) déterminera d'abord si la clé existe. Si elle existe, elle retournera dct[key]. dct[key] à [] et return .

clé, définir le fonctionnement des éléments

Si nous avons maintenant besoin d'obtenir les informations de cartographie de l'intersection des clés de deux dictionnaires.

Méthode d'écriture commune

dic1 = {'Python': 1, 'Java': 2, 'C': 3}
dic2 = {'Python': 3, 'Java': 2, 'C++': 1}
new_dic = {}
for k, v in dic1.items():
if k in dic2.keys():
new_dic[k] = v
print(new_dic)
# {'Python': 1, 'Java': 2}
Copier après la connexion

Méthode d'écriture plus pythonique

dic1 = {'Python': 1, 'Java': 2, 'C': 3}
dic2 = {'Python': 3, 'Java': 2, 'C++': 1}
print({k: dic1[k] for k in dic1.keys() & dic2.keys()})
# {'Python': 1, 'Java': 2}
Copier après la connexion

Ici, dic1.keys() et dic2.keys() utilisent keys() pour effectuer des opérations d'ensemble, et items() peuvent également effectuer des opérations d'ensemble.

Si maintenant nous voulons obtenir exactement les mêmes parties de clé et de valeur dans deux dictionnaires

dic1 = {'Python': 1, 'Java': 2, 'C': 3}
dic2 = {'Python': 3, 'Java': 2, 'C++': 1}
print(dic1.items() & dic2.items())
# {('Java', 2)}
Copier après la connexion

utilisez de manière flexible les fonctionnalités des opérations d'ensemble de clés et d'éléments() pour extraire rapidement le contenu souhaité.

Trier le dictionnaire par clé ou valeur

Utilisez la fonction sorted() pour trier rapidement la clé ou la valeur.

dic = {'a': 2, 'b': 1, 'c': 3, 'd': 0}
lst1 = sorted(dic.items(), key=lambda x: x[0], reverse=False)
# [('a', 2), ('b', 1), ('c', 3), ('d', 0)]
lst2 = sorted(dic.items(), key=lambda x: x[1], reverse=False)
# [('d', 0), ('b', 1), ('a', 2), ('c', 3)]
print('按照键降序:', {key: value for key, value in lst1})
print('按照值降序:', {key: value for key, value in lst2})
# 按照键降序: {'a': 2, 'b': 1, 'c': 3, 'd': 0}
# 按照值降序: {'d': 0, 'b': 1, 'a': 2, 'c': 3}
Copier après la connexion

Tri de plusieurs dictionnaires

Si une séquence contient plusieurs dictionnaires, ces dictionnaires doivent maintenant être triés selon des conditions. Cela peut également être réalisé en utilisant la fonction sorted().

dict_list = [
{'letter': 'B', 'number': '2'},
{'letter': 'A', 'number': '3'},
{'letter': 'B', 'number': '1'}
]
# 按 letter 排序
print(sorted(dict_list,
 key=lambda dic: dic['letter']))
# 按 letter, number 排序
print(sorted(dict_list,
 key=lambda dic: (dic['letter'], dic['number'])))
# [{'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '2'}, {'letter': 'B', 'number': '1'}]
# [{'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '1'}, {'letter': 'B', 'number': '2'}]
Copier après la connexion

Bien sûr, si vous connaissez itemgetter(), le code ci-dessus peut être modifié et la vitesse d'exécution sera plus rapide.

from operator import itemgetter
print(sorted(dict_list
 key=itemgetter('letter')))
print(sorted(dict_list,
 key=itemgetter('letter', 'number')))
Copier après la connexion

itemgetter() n'obtient pas la valeur, mais définit une fonction via laquelle elle est appliquée à l'objet cible.

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal