Сортировка списка словарей по общему ключу
полей, общих для всех словарей. Например:
#algoritms #sorting #operator #itemgetter #attgetter
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
оператор nonlocal. from python 3+
Логика его написания примерно такая же, как и у global. Однако у nonlocal есть особенность. Nonlocal используется чаще всего во вложенных функциях, когда мы хотим дать интерпретатору понять, что для вложенной функции определенная переменная не является локальной, но она и не является глобальной в общем смысле.
Логика его написания примерно такая же, как и у global. Однако у nonlocal есть особенность. Nonlocal используется чаще всего во вложенных функциях, когда мы хотим дать интерпретатору понять, что для вложенной функции определенная переменная не является локальной, но она и не является глобальной в общем смысле.
def get_candy():#operator #nonlocal
candy = 5
def increment_candy():
nonlocal candy
candy += 1
return candy
return increment_candy
result = get_candy()()
print('Всего {} конфет.'.format(result))
>>>
Всего 6 конфет.