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

rows = [
{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},
{'fname': 'David', 'lname': 'Beazley', 'uid': 1002},
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001},
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
]

Можно достаточно легко вывести эти строки с упорядочением по любому из
полей, общих для всех словарей. Например:

from operator import itemgetter
rows_by_uid = sorted(rows, key=itemgetter('uid'))
print(rows_by_uid)

>>>
[{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'},
{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},
{'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'},
{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}]

аналогично:

rows_by_fname = sorted(rows, key=lambda r: r['fname'])

но itemgetter работает быстрее. operator.attgetter() работает с аттрибутами обьектов

#algoritms #sorting #operator #itemgetter #attgetter