Maison >développement back-end >Tutoriel Python >Comment puis-je conserver l'ordre de la liste après la conversion en un ensemble en Python ?

Comment puis-je conserver l'ordre de la liste après la conversion en un ensemble en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-10 18:56:10983parcourir

How Can I Maintain List Order After Converting to a Set in Python?

Préserver l'ordre de la liste lors de la conversion en un ensemble

Lors de la conversion d'une liste en un ensemble en Python, l'ordre des éléments peut changer en raison des ensembles étant des structures de données non ordonnées. Ce comportement peut être gênant si vous devez conserver la commande d'origine.

  1. Raison de la modification de la commande

Les ensembles sont conçus pour permettre une recherche rapide des membres. en stockant des éléments sous forme de valeurs de hachage. L'ordre dans lequel les éléments sont ajoutés à l'ensemble n'est pas conservé. Ainsi, lorsque vous convertissez une liste en ensemble, les éléments sont réorganisés pour optimiser l'efficacité de la recherche.

  1. Préservation de l'ordre avec les opérations d'ensemble.

a. Compréhensions de liste

Si vous devez supprimer des éléments spécifiques d'une liste tout en préservant l'ordre, vous pouvez utiliser une compréhension de liste. Par exemple :

a = [1, 2, 20, 6, 210]
b = set([6, 20, 1])
result = [x for x in a if x not in b]  # [2, 210]

b. OrderedDict (Python 3.7)

Pour les versions Python 3.7 et supérieures, vous pouvez utiliser collections.OrderedDict pour créer des ensembles ordonnés. Il maintient l'ordre des éléments, même après des opérations définies.

from collections import OrderedDict

a = OrderedDict.fromkeys([1, 2, 20, 6, 210])
b = OrderedDict.fromkeys([6, 20, 1])
result = OrderedDict.fromkeys(x for x in a if x not in b)  # OrderedSet([(2, None), (210, None)])

c. OrderedSet (anciennes versions de Python)

Dans les anciennes versions de Python, vous pouvez utiliser le package Ordset pour obtenir des fonctionnalités similaires :

import orderedset

a = orderedset.OrderedSet([1, 2, 20, 6, 210])
b = orderedset.OrderedSet([6, 20, 1])
result = orderedset.OrderedSet(x for x in a if x not in b)

En utilisant ces techniques, vous pouvez effectuer des opérations d'ensemble tout en préservant l'ordre original de la liste.

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
Article précédent:JSON et ses variantesArticle suivant:JSON et ses variantes