Skip to content

Instantly share code, notes, and snippets.

@jigi-33
Created May 25, 2020 16:34
Show Gist options
  • Save jigi-33/a4122fe8f037f59d84118decf572791d to your computer and use it in GitHub Desktop.
Save jigi-33/a4122fe8f037f59d84118decf572791d to your computer and use it in GitHub Desktop.
Словари (Dicts) - применимые манипуляции
"""
DICTIONARIES - основные манипуляции
"""
# Как смержить два словаря в один?
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
z = {**x, **y}
# (при совпадении ключей Питон перезаписывает значение ключа слева направо)
# или второй вариант:
z = dict(x, **y)
# Как отстортировать словарь по значению?
# (есть два способа):
xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}
sorted(xs.items(), key=lambda x: x[1])
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
# или вторым способом:
import operator
sorted(xs.items(), key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
# Использование словарей в качестве альтернативы if-else выражениям
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Есть способ, который вернет значение по умолчанию в том случае, если элемент отсутствует в списке
# Сделаем это с помощью метода словарей get(); это метод найдет ключ и возвратит значение по умолчанию, если такого ключа не отыщет
# DefaultDict чуть поудобнее, но он уже не панацея с современными возможностями словарей сверсии 3.4+
price_list = {'fish': 8,
'beef': 7,
'broccoli': 3,}
def find_price(item):
return 'The price for {} is {}'.format(item, price_list.get(item, 'not available'))
find_price('fish')
find_price('flower')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment