Фильтрация по словарю Python3, почему один метод работает быстрее другого? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два одинаковых списка длины ids, descriptions, и оба содержат только строки.У меня есть special_ids, который также является списком, содержащим подмножество ids

Я пробовал два разных подхода

# 1
filtered = {k:v for k,v in zip(ids, descriptions) if k in special_ids}

# 2
filtered = {k:v for k,v in zip(ids, descriptions)}
filtered = {k: v for k,v in filtered if k in special_ids}

Второй был быстрее.Я говорю в те минуты, когда len(ids) - это 370k ~, а len(special_ids) - это 1.2k ~

Почему второй должен работать намного быстрее?

Примечание:В реальной задаче элементы ids представляют собой списки из одного элемента закодированных строк, поэтому на самом деле я распаковываю их как k[0].decode() for k in ids в каждом из решений, но я не думаю, что это имеет значение, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...