python and some backend notes(ru)
108 subscribers
5 photos
1 file
192 links
Личные заметки и ссылки на статьи по python и backend вопросам, но может кому-то тоже будет интересно
Download Telegram
Группирование записей на основе полей

Функция itertools.groupby()

rows = [
{'address': 'CLARK', 'date': '07/01/2012'},
{'address': 'CLARK', 'date': '07/04/2012'},
{'address': '58TH', 'date': '07/02/2012'},
{'address': 'CLARK', 'date': '07/03/2012'},
{'address': 'RAVENSWOOD', 'date': '07/02/2012'},
{'address': 'ADDISON', 'date': '07/02/2012'},
{'address': 'BROADWAY', 'date': '07/01/2012'},
{'address': 'GRANVILLE', 'date': '07/04/2012'},
]


from operator import itemgetter
from itertools import groupby

# Сначала сортируем по нужным полям
rows.sort(key=itemgetter('date'))

# Итерируем в группах
for date, items in groupby(rows, key=itemgetter('date')):
print(date)
for i in items:
print(' ', i)
>>>

07/01/2012
{'date': '07/01/2012', 'address': 'CLARK'}
{'date': '07/01/2012', 'address': 'BROADWAY'}
07/02/2012
{'date': '07/02/2012', 'address': '58TH'}
{'date': '07/02/2012', 'address': 'RAVENSWOOD'}
{'date': '07/02/2012', 'address': 'ADDISON'}
07/03/2012
{'date': '07/03/2012', 'address': 'CLARK'}
07/04/2012
{'date': '07/04/2012', 'address': 'CLARK'}
{'date': '07/04/2012', 'address': 'GRANVILLE'}

#algoritms #itertools #groupby