Maison >développement back-end >Tutoriel Python >Comment puis-je filtrer efficacement les dictionnaires en fonction de conditions personnalisées en Python ?
Filtrage de dictionnaire avancé avec des conditions personnalisées
L'exemple du livre illustre le filtrage de dictionnaire à l'aide de la fonction items(), un processus qui peut être rationalisé pour efficacité.
Méthode de compréhension de dict :
Python propose un outil puissant à cet effet : la compréhension de dict. Avec lui, vous pouvez créer un nouveau dictionnaire basé sur des valeurs existantes tout en appliquant des conditions personnalisées. Par exemple, pour filtrer un dictionnaire de points :
points = {'a': (3, 4), 'b': (1, 2), 'c': (5, 5), 'd': (3, 3)} points_under_5 = { k: v for k, v in points.items() # Iterate over (key, value) pairs if v[0] < 5 and v[1] < 5 # Filter based on condition }
Compatibilité Python 2 :
Dans Python 2 (à partir de la version 2.7), la syntaxe d'itération sur les éléments du dictionnaire est légèrement différent :
points_under_5 = { k: v for k, v in points.iteritems() # Use 'iteritems()' instead of 'items()' if v[0] < 5 and v[1] < 5 }
Considérations relatives aux performances :
L'approche de compréhension de dict offre des performances supérieures par rapport à la méthode d'itération manuelle :
import timeit # Manual iteration manual_time = timeit.timeit( """ points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)} points_small={} for item in [i for i in points.items() if i[1][0]<5 and i[1][1]<5]: points_small[item[0]]=item[1] """, number=1000000 ) # Dict comprehension dict_time = timeit.timeit( """ points={'a':(3,4), 'b':(1,2), 'c':(5,5), 'd':(3,3)} points_under_5 = {k:v for k, v in points.items() if v[0]<5 and v[1]<5} """, number=1000000 ) print("Manual iteration time:", manual_time) print("Dict comprehension time:", dict_time)
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!