Изменение словаря во время итерации по нему
▪️Вообще говоря не стоит изменять словарь, по которому происходит итерация
▪️Эта штука срабатывает только восемь раз, ведь именно это та точка, в которой словарь должен был бы изменить размер, чтобы удержать больше ключей (стандартно есть только восемь записей, поэтому меняйте размер, если нужно). Это фактическая деталь реализации.
#dict #tips
▪️Вообще говоря не стоит изменять словарь, по которому происходит итерация
▪️Эта штука срабатывает только восемь раз, ведь именно это та точка, в которой словарь должен был бы изменить размер, чтобы удержать больше ключей (стандартно есть только восемь записей, поэтому меняйте размер, если нужно). Это фактическая деталь реализации.
#dict #tips
Метод get для словарей
Вывод:
Вызов функции с аргументом по умолчанию (или без существующего ключа):
#tips #dict
name_for_userid = {
382: "Alice",
590: "Bob",
951: "Dilbert",
}
def greeting(userid):
return "Hi {}".format(name_for_userid.get(userid, “there”))Вывод:
>>> greeting(382)
"Hi Alice!”
Вызов функции с аргументом по умолчанию (или без существующего ключа):
>>> greeting(333333)
"Hi there!”
#tips #dict
Использование dict() вместо цепочек if-elif-else
В некоторых случаях удобнее и лучше использовать dict() вместо цепочек условных операторов.
Данный код, если можно так выразиться, более “pythonic”:
Вывод:
#tips #dict
В некоторых случаях удобнее и лучше использовать dict() вместо цепочек условных операторов.
def dispatch_if(operator, x, y):
if operator == 'add':
return x + y
elif operator == 'sub':
return x - y
elif operator == 'mul':
return x * y
elif operator == 'div':
return x / y
else:
return None
Данный код, если можно так выразиться, более “pythonic”:
def dispatch_dict(operator, x, y):
return {
'add': lambda: x + y,
'sub': lambda: x - y,
'mul': lambda: x * y,
'div': lambda: x / y,
}.get(operator, lambda: None)()
Вывод:
>>> dispatch_if('mul', 2, 8)
16
>>> dispatch_dict('mul', 2, 8)
16
>>> dispatch_if('unknown', 2, 8)
None
>>> dispatch_dict('unknown', 2, 8)
None#tips #dict
Dict.
Пара коротких заметок по поводу словарей.
📌 Для того, чтобы взять “срез” словаря, можно поступить так:
📌 Для того, чтобы сложить два словаря:
P.S. Если будете копировать, поправьте кавычки. Телеграм их исправляет на нечитаемые python-ом.
#dict
Пара коротких заметок по поводу словарей.
📌 Для того, чтобы взять “срез” словаря, можно поступить так:
import itertools
m_dict = {‘1’:’1’, ‘2’:’2’, ‘3’:’3’, ‘4’:’4’, ‘5’:’5’}
m_dict = dict(itertools.islice(m_dict.items(), 3))
Out[0]: {‘1’:’1’, ‘2’:’2’, ‘3’:’3’}📌 Для того, чтобы сложить два словаря:
m_dict1 = {‘1’:’1’, ‘2’:’2’}
m_dict2 = {‘3’:’3’, ‘4’:’4’}
m_dict = dict(m_dict1, **m_dict2)Out[0]: {‘1’:’1’, ‘2’:’2’, ‘3’:’3’, ‘4’:’4’}P.S. Если будете копировать, поправьте кавычки. Телеграм их исправляет на нечитаемые python-ом.
#dict