PYPROGLIB Telegram 7031
✔️ How to: 10 вещей, которые можно сделать с Python collections

Модуль collections — это кладезь специализированных контейнеров, которые упрощают код, делают его читаемее и иногда даже быстрее, чем стандартные dict, list, set и tuple.

Вот 10 приёмов, которые могут вас удивить:

1️⃣ Counter — быстрое подсчёты элементов

Используется для подсчёта количества вхождений элементов в последовательности и поиска наиболее частых значений:
from collections import Counter

words = ['galaxy', 'nebula', 'asteroid', 'comet', 'gravitas', 'galaxy', 'stardust', 'quasar', 'galaxy', 'comet']
word_counts = Counter(words)
print(word_counts.most_common(2))


2️⃣ namedtuple — «лёгкие» классы для хранения данных

Создаёт объекты с доступом к полям по имени и индексу, занимают меньше памяти, чем классы:
from collections import namedtuple

Book = namedtuple('Book', ['title', 'author', 'year_published', 'isbn'])
my_book = Book("The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 1979, "978-0345391803")
print(my_book.title, my_book.year_published)


3️⃣ defaultdict — словарь без KeyError

Автоматически создаёт значение для нового ключа, что удобно для группировки данных:
from collections import defaultdict

grouped_scores = defaultdict(list)
for player, score in [('A', 8), ('B', 7), ('A', 6)]:
grouped_scores[player].append(score)
print(grouped_scores)


4️⃣ deque — быстрая очередь и стек

Двусторонняя очередь с быстрым добавлением и удалением с обоих концов:
from collections import deque

q = deque([1, 2, 3])
q.append(4)
q.popleft()
print(q)


5️⃣ OrderedDict — управление порядком элементов

Сохраняет порядок вставки и умеет перемещать элементы в конец или начало:
from collections import OrderedDict

od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))


6️⃣ ChainMap — объединение словарей без копирования

Позволяет искать ключи в нескольких словарях, как будто это один:
from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
chain = ChainMap(dict1, dict2)
print(chain['b'])


7️⃣ deque с maxlen — ограниченный буфер

Хранит только последние N элементов, автоматически удаляя старые:
from collections import deque

history = deque(maxlen=3)
for cmd in ["cd ~", "ls", "pwd", "mkdir test"]:
history.append(cmd)
print(history)


8️⃣ defaultdict для вложенных структур

Легко создаёт многоуровневые словари без явной инициализации:
from collections import defaultdict
import json

def tree(): return defaultdict(tree)
nested = tree()
nested['user']['name'] = 'Alice'
print(json.dumps(nested, indent=2))


9️⃣ Counter — арифметика частот

Можно складывать, вычитать и находить пересечение частот элементов:
from collections import Counter

c1 = Counter(a=3, b=1)
c2 = Counter(a=1, b=2)
print(c1 + c2, c1 & c2)


🔟 deque.rotate — циклический сдвиг элементов

Быстро сдвигает элементы вправо или влево:
from collections import deque

d = deque([1, 2, 3, 4])
d.rotate(1)
print(d)


🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍207🔥2



tgoop.com/pyproglib/7031
Create:
Last Update:

✔️ How to: 10 вещей, которые можно сделать с Python collections

Модуль collections — это кладезь специализированных контейнеров, которые упрощают код, делают его читаемее и иногда даже быстрее, чем стандартные dict, list, set и tuple.

Вот 10 приёмов, которые могут вас удивить:

1️⃣ Counter — быстрое подсчёты элементов

Используется для подсчёта количества вхождений элементов в последовательности и поиска наиболее частых значений:

from collections import Counter

words = ['galaxy', 'nebula', 'asteroid', 'comet', 'gravitas', 'galaxy', 'stardust', 'quasar', 'galaxy', 'comet']
word_counts = Counter(words)
print(word_counts.most_common(2))


2️⃣ namedtuple — «лёгкие» классы для хранения данных

Создаёт объекты с доступом к полям по имени и индексу, занимают меньше памяти, чем классы:
from collections import namedtuple

Book = namedtuple('Book', ['title', 'author', 'year_published', 'isbn'])
my_book = Book("The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 1979, "978-0345391803")
print(my_book.title, my_book.year_published)


3️⃣ defaultdict — словарь без KeyError

Автоматически создаёт значение для нового ключа, что удобно для группировки данных:
from collections import defaultdict

grouped_scores = defaultdict(list)
for player, score in [('A', 8), ('B', 7), ('A', 6)]:
grouped_scores[player].append(score)
print(grouped_scores)


4️⃣ deque — быстрая очередь и стек

Двусторонняя очередь с быстрым добавлением и удалением с обоих концов:
from collections import deque

q = deque([1, 2, 3])
q.append(4)
q.popleft()
print(q)


5️⃣ OrderedDict — управление порядком элементов

Сохраняет порядок вставки и умеет перемещать элементы в конец или начало:
from collections import OrderedDict

od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))


6️⃣ ChainMap — объединение словарей без копирования

Позволяет искать ключи в нескольких словарях, как будто это один:
from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
chain = ChainMap(dict1, dict2)
print(chain['b'])


7️⃣ deque с maxlen — ограниченный буфер

Хранит только последние N элементов, автоматически удаляя старые:
from collections import deque

history = deque(maxlen=3)
for cmd in ["cd ~", "ls", "pwd", "mkdir test"]:
history.append(cmd)
print(history)


8️⃣ defaultdict для вложенных структур

Легко создаёт многоуровневые словари без явной инициализации:
from collections import defaultdict
import json

def tree(): return defaultdict(tree)
nested = tree()
nested['user']['name'] = 'Alice'
print(json.dumps(nested, indent=2))


9️⃣ Counter — арифметика частот

Можно складывать, вычитать и находить пересечение частот элементов:
from collections import Counter

c1 = Counter(a=3, b=1)
c2 = Counter(a=1, b=2)
print(c1 + c2, c1 & c2)


🔟 deque.rotate — циклический сдвиг элементов

Быстро сдвигает элементы вправо или влево:
from collections import deque

d = deque([1, 2, 3, 4])
d.rotate(1)
print(d)


🐸 Библиотека питониста

#буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tgoop.com/pyproglib/7031

View MORE
Open in Telegram


Telegram News

Date: |

Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. Although some crypto traders have moved toward screaming as a coping mechanism, several mental health experts call this therapy a pseudoscience. The crypto community finds its way to engage in one or the other way and share its feelings with other fellow members. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. As of Thursday, the SUCK Channel had 34,146 subscribers, with only one message dated August 28, 2020. It was an announcement stating that police had removed all posts on the channel because its content “contravenes the laws of Hong Kong.”
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American