Веб-версияОткрыть в Telegram

ПостНачали терзать сомнения, а не будет ли обращение к словарю с помощью get() на каждый элемент сильно медленнее, чем сразу…

9 марта 2021
П
Пингвитон
Начали терзать сомнения, а не будет ли обращение к словарю с помощью get() на каждый элемент сильно медленнее, чем сразу сконструировать список пар с помощью items() и пройтись по нему. Оказалось, что нет (в который раз рекламирую timeit, пользуйтесь им, он классный): ~$ python -m timeit -s 'd = {i:i for i in range(100000)}' -p 'min(d.items(), key=lambda x: x[1])[0]' 50 loops, best of 5: 7.44 msec per loop ~$ python -m timeit -s 'd = {i:i for i in range(100000)}' -p 'min(d, key=d.get)' 100 loops, best of 5: 3.15 msec per loop Лямбды такие медленные ): Поход гетом в словарь на каждом элементе быстрее вызова лямбды на каждый элемент в 2.5 раза. Так что больше не терзаюсь.
6 · 1.2K ·

Рядом в ленте

ППингвитонВ модуле operator содержатся функции соответствующие операторам. Например, operator.eq для == или operator.mul для умножения. Зачем? Чтобы не писать страшненькиППингвитонКакой чудесный способ выбрать min/max из словаря, когда нужно получить только ключ: >>> d = {'a': 20, 'b': 5, 'c': 30} >>> min(d, key=d.get) 'b' >>> max(d, key=
это сообщение
ППингвитонПингвитон@linuxpytipsntricks · канал · Технологии
151подписчиков62постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем