Me pregunto qué es mejor hacer:
d = {'a': 1, 'b': 2}
'a' in d
True
o:
d = {'a': 1, 'b': 2}
d.has_key('a')
True
in
es definitivamente más pitónico.
De hecho has_key()
fue eliminado en Python 3.x.
El sistema in
gana por goleada, no sólo por su elegancia (y por no estar obsoleto;-) sino también por su rendimiento, por ejemplo:
$ python -mtimeit -s'd=dict.fromkeys(range(99))' '12 in d'
10000000 loops, best of 3: 0.0983 usec per loop
$ python -mtimeit -s'd=dict.fromkeys(range(99))' 'd.has_key(12)'
1000000 loops, best of 3: 0.21 usec per loop
Aunque la siguiente observación no es siempre cierta, te darás cuenta de que normalmente, en Python, la solución más rápida es más elegante y pitónica; por eso mtimeit
es TAN útil -- ¡no se trata sólo de ahorrar un centenar de nanosegundos aquí y allá!-)