У меня есть два одинаковых списка длины 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
в каждом из решений, но я не думаю, что это имеет значение, хотя