Pour chaque python contenant C, l'espoir est que
for item in C:
assert item in C
va passer juste une fine -- ne pas vous trouver étonnant si l'un des sens de l' in
(la boucle de la clause) a un sens complètement différent de l'autre (le contrôle de présence)? Je le ferais! Il s'agit naturellement de cette façon pour les listes, les ensembles, les tuples, ...
Ainsi, lors de l' C
est un dictionnaire, si in
étaient de rendement clé/valeur de tuples dans une for
boucle, puis, par le principe de moindre étonnement, in
seraient également à prendre un tuple comme sa gauche opérande dans l'enceinte de confinement vérifier.
Quelle est l'utilité? Assez inutile, en effet, fondamentalement, rendant if (key, value) in C
synonyme if C.get(key) == value
- ce qui est une case je crois que j'ai peut-être effectué, ou voulu effectuer, 100 fois plus rares que ce que l' if k in C
réellement les moyens, en vérifiant la présence de la clé seulement et totalement ignorant la valeur.
D'autre part, vouloir boucle juste sur les touches est assez fréquent, par exemple:
for k in thedict:
thedict[k] += 1
ayant de la valeur, ne serait pas utile en particulier:
for k, v in thedict.items():
thedict[k] = v + 1
en fait un peu moins clair et moins concis. (À noter qu' items
a l'orthographe d'origine de la "bonne" méthodes à utiliser pour obtenir des paires clé/valeur: malheureusement c'était à l'époque où ces accesseurs retourné l'ensemble des listes, afin de soutenir "juste itération" une autre orthographe doit être introduit, et iteritems
c'était en Python 3, où l'arrière des contraintes de compatibilité avec les précédentes versions de Python ont été très affaibli, il est devenu items
de nouveau).