Обработка исключений
try: d[key] = d[key] + 1 except KeyError: d[key] = 1
Метод has_key
if d.has_key(key): d[key] = d[key] + 1 else: d[key] = 1
Метод setdefault
d[key] = d.setdefault(key, 0) + 1
Метод get
d[key] = d.get(key, 0) + 1
Оператор in
if key in d: d[key] = d[key] + 1 else: d[key] = 1
- Если предполагается почти 100% существование ключей в словаре, то инструкция try except будет самой эффективной на любом наборе данных.
- Если искомый ключ часто не существует, то инструкция try except окажется самой медленной из возможных решений.
- Метод has_key эффективно работает с небольшими наборами данных, на больших ведет себя хуже.
- Методы setdefault и get почти одинаковы по скорости, setdefault незначительно выигрывает.
- Хорошие показатели достигаются с оператором in и на маленьких и на больших наборах данных.
Если есть сомнения что лучше выбрать в конкретной ситуации, лучше использовать оператор in.
А еще лучше - тестировать.
Информацию нашел здесь http://wiki.gungfu.de/Main/PythonIdioms
По этой ссылке полное описание тестов с результатами.
Комментариев нет:
Отправить комментарий