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
3 Réponses :
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)
Qu'en est-il de
set(d) == set(key_list)
set (d) est égal à set (d.keys ()) comme l'a souligné @gmds
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.
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
>>>