Maison > développement back-end > Tutoriel Python > Comment puis-je effectuer des opérations d'ensemble tout en préservant l'ordre d'origine des éléments ?

Comment puis-je effectuer des opérations d'ensemble tout en préservant l'ordre d'origine des éléments ?

Mary-Kate Olsen
Libérer: 2024-12-16 16:41:10
original
248 Les gens l'ont consulté

How Can I Perform Set Operations While Preserving the Original Order of Elements?

Opérations d'ensemble et préservation de l'ordre

Lors de la conversion d'une liste en un ensemble, l'ordre des éléments change car les ensembles sont des structures de données non ordonnées qui priorisent rapidement tests d'adhésion. Ils ne conservent pas l'ordre d'insertion d'origine.

Préservation de l'ordre dans les opérations d'ensemble

Pour effectuer des opérations d'ensemble sans perdre l'ordre initial, envisagez les options suivantes :

1. Compréhensions de liste pour la différence d'ensemble

Si vous avez une liste régulière et que vous devez supprimer un ensemble d'éléments tout en préservant l'ordre, utilisez une compréhension de liste :

a = [1, 2, 20, 6, 210]
b = set([6, 20, 1])
[x for x in a if x not in b]  # [2, 210]
Copier après la connexion

2 . Clés de dictionnaire pour l'ensemble ordonné

Pour une structure de données avec des tests d'appartenance rapides et une préservation de l'ordre d'insertion, utilisez les clés d'un dictionnaire Python (à partir de Python 3.7) :

a = dict.fromkeys([1, 2, 20, 6, 210])
b = dict.fromkeys([6, 20, 1])
dict.fromkeys(x for x in a if x not in b)  # {2: None, 210: None}
Copier après la connexion

3. Collections.OrderedDict (Legacy Support)

Pour les anciennes versions de Python, comptez sur collections.OrderedDict :

a = collections.OrderedDict.fromkeys([1, 2, 20, 6, 210])
b = collections.OrderedDict.fromkeys([6, 20, 1])
collections.OrderedDict.fromkeys(x for x in a if x not in b)  # OrderedDict([(2, None), (210, None)])
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal