Αναρωτιέμαι τι είναι καλύτερο να κάνω:
d = {'a': 1, 'b': 2}
'a' in d
True
ή:
d = {'a': 1, 'b': 2}
d.has_key('a')
True
Το in
κερδίζει με διαφορά, όχι μόνο από άποψη κομψότητας (και επειδή δεν έχει καταργηθεί;-) αλλά και από άποψη απόδοσης, π.χ.:
$ 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
Αν και η ακόλουθη παρατήρηση δεν είναι πάντα αληθινή, θα παρατηρήσετε ότι συνήθως, στην Python, η ταχύτερη λύση είναι πιο κομψή και Pythonic- γι' αυτό το λόγο το -mtimeit
είναι ΤΟΣΟ χρήσιμο -- δεν είναι μόνο για να εξοικονομήσουμε εκατό νανοδευτερόλεπτα εδώ και εκεί!-)