TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #96 · 5 јун.

Бывают задачи когда из большого массива объектов требуется отфильтровать эти объекты по категориям. В результате получаем словарь примерно такого вида: data = { "category1": [item1, item2, ...], "category2": [item1, item2, ...], ... } При этом заранее мы не знаем список категорий и их необходимо добавлять в процессе итерации. Как такой код будет выглядеть: items = [...] sorted_items = {} for item in items: cat = get_category(item) if cat not in sorted_items: sorted_items[cat] = [] sorted_items[cat].append(item) Значением ключа является не сам элемент а промежуточный объект это список. Потому нам следует сначала убедиться, что он есть, а если нету то создать. Альтернативный код делающий тоже самое: for item in items: cat = get_category(item) if cat not in sorted_items: sorted_items[cat] = [item] else: sorted_items[cat].append(item) Чтобы избежать этой проверки можно использовать тип defaultdict, это очень простой класс который сам за вас сделает проверку и добавит нужный тип если его нет. Просто укажите нужный тип в конструкторе. from collections import defauldict items = [...] sorted_items = defaultdict(list) for item in items: sorted_items[get_category(item)].append(item) Если указанного ключа нет в словаре, то он создаётся сразу со списком в значении и возвращается как будто он там и был. #tricks#libs

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags