8
votes

Comment tester si un dictionnaire contient certaines clés

Y a-t-il une bonne approche pour tester si un dictionnaire contient plusieurs clés?

une version courte de: xxx

merci.

modifier : Je ne peux utiliser Python2.4 -.-


0 commentaires

5 Réponses :


20
votes
if all(test in d for test in ('a','b','c')):
    # do something

0 commentaires

1
votes

pourrait utiliser un élément d'élément enveloppé dans un essai / sauf. xxx

mais je préfère la solution de Paul McGuire


0 commentaires

6
votes

in python3, vous pouvez écrire xxx

dans python2.7 Vous pouvez écrire xxx

bien sûr si les clés ne sont pas des caractères simples Vous pouvez remplacer SET ("ABC") avec SET (("A ',' B ',' C '))


2 commentaires

serait doux, mais je ne peux utiliser Python 2.4 que sur notre serveur Prod.


+1 Pour une exhaustivité au cas où une personne plus tard est à la recherche d'ici et utilise Python 2.7+



21
votes

Vous pouvez utiliser set.issubset (...) , comme: xxx


python 3 a introduit une syntaxe littérale définie qui a été Backporté à Python 2.7, donc ces jours-ci, ce qui précède peut être écrit: xxx


1 commentaires

Set (sub_dict) .issubset (parent_dict) semble fonctionner aussi, et c'est plus simple pour moi. Mais merci pour le pointeur :)



1
votes

in 2.4, j'utilise toujours des opérations définies à de telles fins. Si cela vaut la peine d'avertir (ou d'un autre type de msg ou d'exception) lorsque certaines touches attendues sont manquantes, je fais en particulier:

missing = set(d).difference(('a', 'b', 'c'))
if missing:
    logging.warn("Missing keys: %s", ', '.join(sorted(missing)))
else:
    ...


0 commentaires