Maison >développement back-end >Tutoriel Python >Comment filtrer efficacement un dictionnaire en fonction de conditions arbitraires en Python ?

Comment filtrer efficacement un dictionnaire en fonction de conditions arbitraires en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 10:15:03864parcourir

How can I efficiently filter a dictionary based on arbitrary conditions in Python?

Filtrer des dictionnaires avec des conditions arbitraires

Les dictionnaires fournissent un moyen puissant d'organiser et de stocker des données en Python. Cependant, il est souvent nécessaire de filtrer certains éléments en fonction de conditions spécifiques.

Considérons un scénario dans lequel vous disposez d'un dictionnaire de points avec des coordonnées (x, y) :

points = {'a': (3, 4), 'b': (1, 2), 'c': (5, 5), 'd': (3, 3)}

Pour créer un nouveau dictionnaire contenant des points avec des valeurs x et y inférieures à 5, vous pouvez d'abord tenter une approche basée sur des boucles :

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]

Cependant, il existe une solution plus élégante et concise utilisant les compréhensions de dict :

Python 3 :

points_small = {k: v for k, v in points.items() if v[0] < 5 and v[1] < 5}

Python 2 (2.7) :

points_small = {k: v for k, v in points.iteritems() if v[0] < 5 and v[1] < 5}

Les compréhensions de dict offrent un aperçu concis et une syntaxe lisible pour filtrer les éléments du dictionnaire. Ils peuvent améliorer considérablement la maintenabilité et les performances du code par rapport aux approches traditionnelles basées sur des boucles.

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:
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