Maison > Article > développement back-end > Dictionnaire Python : Y a-t-il un gameplay avancé que je ne sais pas faire ?
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}
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)
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()}
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 .
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é.
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}
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!