1
votes

Comment vérifier si un dictionnaire a exactement les mêmes clés dans une liste

Je veux vérifier si un dictionnaire contient exactement les mêmes clés que dans une liste de clés (ni plus, ni moins). J'utilise actuellement all () et une vérification de longueur pour ce faire. Y a-t-il un meilleur moyen? Merci!

d = {'1': 'one', '3': 'three', '2': 'two'}

key_list = ['1', '2', '3']

all(col in d for col in key_list) and len(d) == 3
True


0 commentaires

3 Réponses :


0
votes

Une liste est idéale pour maintenir l'ordre, mais un set est bien meilleur pour vérifier l'appartenance:

d = {'1': 'one', '3': 'three', '2': 'two'}

key_list = set(['1', '2', '3'])

all(col in d for col in key_list) and len(d) == 3

set a une recherche heure de O (1), par rapport à la liste qui est O (N)


0 commentaires

6
votes

Qu'en est-il de

set(d) == set(key_list)

set (d) est égal à set (d.keys ()) comme l'a souligné @gmds


5 commentaires

Beaucoup plus succinct que ma réponse


Vous pouvez simplement utiliser set (d) , car l'itération sur un dict est sur ses clés par défaut.


set () garantit-il l'ordre des clés sur un dict?


set ni dict concerne la commande


Deux ensembles sont égaux si et seulement si chaque élément de chaque ensemble est contenu dans l'autre (chacun est un sous-ensemble de l'autre). Du doc. Rien sur la commande.



0
votes

Vous pouvez faire quelque chose comme ceci:

>>> d = {'1': 'one', '3': 'three', '2': 'two'}
>>> key_list = ['1', '2', '3']
>>> sorted(d) == sorted(key_list)
True
>>> 


0 commentaires