Вот разбивка:
import snoop
categories = {
"objects": ["tables", "ladders", "chairs"],
"animals": ["chicken", "dog", "cat"],
"sports": ["basketball", "soccer", "rugby"]
}
snoop.pp.deep(lambda: ', '.join(map(str, list((*categories,)))))
Вывод:
................... categories = {'objects': ['tables', 'ladders', 'chairs'], 'animals': ['chicken', 'dog', 'cat'], 'sports': ['basketball', 'soccer', 'rugby']}
........... (*categories,) = ('objects', 'animals', 'sports')
....... list((*categories,)) = ['objects', 'animals', 'sports']
... map(str, list((*categories,))) = <map object at 0x10d261520>
', '.join(map(str, list((*categories,)))) = 'objects, animals, sports'
Итерация по словарю дает его ключи, следовательно (*categories,) = ('objects', 'animals', 'sports')
.
Большая часть кода бессмысленно: ', '.join(categories)
будет работать так же хорошо. Каждое из следующего независимо является избыточным и может быть пропущено:
map(str, ...)
list(...)
(*...,)