Maison  >  Article  >  développement back-end  >  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
WBOYavant
2023-04-11 23:58:081576parcourir

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

Méthode d'écriture commune

for k, v in lst:
dic[k] = v

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}

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

Manière d'écriture pythonique

dct[key] = dct.get(key, 0)

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

Manière d'écriture plus pythonique

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

Modification et initialisation de séquence

Données d'échantillon

lst = [('a', 1), ('b', 2), ('c', 3)]
dic = {'a': [0]}

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]

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

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}

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}

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

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}

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer