O que será melhor a fazer?
d = {'a': 1, 'b': 2}
'a' in d
True
ou..:
d = {'a': 1, 'b': 2}
d.has_key('a')
True
"in" é definitivamente mais pítonico.
Na verdade has_key()
foi removido em Python 3.x.
em' ganha de mãos dadas, não só em elegância (e não sendo depreciado;-), mas também em desempenho, por exemplo:
$ 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
Embora a seguinte observação não seja sempre verdadeira, você notará que usualmente, em Python, a solução mais rápida é mais elegante e Pythonic; é por isso que -mtimeit
é tão útil -- não se trata apenas de salvar cem nanossegundos aqui e ali! -)