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]
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}
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)])
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!