Skip to content

Latest commit

 

History

History
335 lines (268 loc) · 12.5 KB

08_dictionaries.md

File metadata and controls

335 lines (268 loc) · 12.5 KB

30 дней Python: День 8 - Словари

<< День 7 | День 9 >>

30DaysOfPython

День 8

Словари

Словарь - это коллекция неупорядоченных, изменяемых (mutable) пар (ключ: значение) типов данных.

Создание словаря

Для создания словаря в Python мы используем фигурные скобки {} или встроенную функцию dict().

# синтаксис
empty_dict = {}
# создание словаря со значениями
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
    }
    }

Вышеуказанный словарь показывает, что значение в словаре может быть любым типом данных: строкой, булевым значением, списком, кортежем, множеством или другим словарем.

Длина словаря

Функция len() возвращает количество пар "ключ: значение" в словаре.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(len(dct)) # 4

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
    }
    }
print(len(person)) # 7

Доступ к элементам словаря

Мы можем получить доступ к элементам словаря, обратившись к ним по имени ключа.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct['key1']) # value1
print(dct['key4']) # value4

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
    }
    }
print(person['first_name']) # Asabeneh
print(person['country'])    # Finland
print(person['skills'])     # ['JavaScript', 'React', 'Node', 'MongoDB', 'Python']
print(person['skills'][0])  # JavaScript
print(person['address']['street']) # Space street
print(person['city'])       # Error

Доступ к элементу по имени ключа вызовет ошибку, если ключа не существует. Чтобы избежать этой ошибки, мы должны сначала проверить, существует ли ключ, или мы можем использовать метод get(). Метод get() возвращает None (является объектом типа NoneType), если ключа не существует.

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
    }
    }
print(person.get('first_name')) # Asabeneh
print(person.get('country'))    # Finland
print(person.get('skills')) #['HTML','CSS','JavaScript', 'React', 'Node', 'MongoDB', 'Python']
print(person.get('city'))   # None

Добавление элементов в словарь

Мы можем добавлять новые пары "ключ: значение" в словарь.

# sсинтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key5'] = 'value5'

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
        }
}
person['job_title'] = 'Instructor'
person['skills'].append('HTML')
print(person)

Изменение элементов в словаре

Мы можем изменять элементы в словаре.

# syntax
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key1'] = 'value-one'

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
    }
    }
person['first_name'] = 'Eyob'
person['age'] = 252

Проверка ключей в словаре

Используем оператор in для проверки существования ключа в словаре.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print('key2' in dct) # True
print('key5' in dct) # False

Удаление пары ключ-значение из словаря

  • pop(key): удаляет элемент с указанным именем ключа:
  • popitem(): удаляет последний элемент
  • del: удаляет элемент с указанным именем ключа
# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct.pop('key1') # удаляет элемент с ключом 'key1'
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct.popitem() # удаляет последний элемент
del dct['key2'] # удаляет элемент с ключом 'key2'

Например:

person = {
    'first_name':'Asabeneh',
    'last_name':'Yetayeh',
    'age':250,
    'country':'Finland',
    'is_marred':True,
    'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
    'address':{
        'street':'Space street',
        'zipcode':'02210'
    }
    }
person.pop('first_name')        # Удаляет элемент с именем "firstname"
person.popitem()                # Удаляет элемент с именем "address"
del person['is_married']        # Удаляет элемент с именем "is_married"

Преобразование словаря в список элементов

Метод items() преобразует словарь в список кортежей.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.items()) # dict_items([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), ('key4', 'value4')])

Очистка словаря

Если мы не хотим оставлять элементы в словаре, мы можем очистить его, используя метод clear().

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.clear()) # None

Удаление словаря

Если мы больше не используем словарь, мы можем полностью удалить его с помощью оператора del.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
del dct

Копирование словаря

Мы можем скопировать словарь с помощью метода copy(). Используя копию, мы можем избежать изменения исходного словаря.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct_copy = dct.copy() # {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}

Получение ключей словаря в виде списка

Метод keys() позволяет получить все ключи словаря в виде списка.

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
keys = dct.keys()
print(keys)     # dict_keys(['key1', 'key2', 'key3', 'key4'])

Получение значений словаря в виде списка

Метод values() позволяет получить все значения словаря в виде списка

# синтаксис
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
values = dct.values()
print(values)     # dict_values(['value1', 'value2', 'value3', 'value4'])

🌕 Вы просто великолепны! Теперь вы обладаете непревзойденной мощью словарей. Вы только что успешно выполнили задания восьмого дня и находитесь на 8 шагов впереди, двигаясь по пути к великолепию. Теперь давайте сделаем несколько упражнений для вашего ума и мышц.

Упражнения: День 8

  1. Создайте пустой словарь с именем "dog".
  2. Добавьте в словарь "dog" ключи "name", "color", "breed", "legs" и "age".
  3. Создайте словарь "student" и добавьте ключи "first_name", "last_name", "gender", "age", "marital status", "skills", "country", "city" и "address".
  4. Получите длину словаря "student".
  5. Получите значение ключа "skills" и проверьте его тип данных, он должен быть списком.
  6. Измените значения ключа "skills", добавив одну или две навыка.
  7. Получите ключи словаря в виде списка.
  8. Получите значения словаря в виде списка.
  9. Преобразуйте словарь в список кортежей с помощью метода items().
  10. Удалите один из элементов из словаря.
  11. Удалите один из словарей полностью.

🎉 ПОЗДРАВЛЯЕМ ! 🎉

<< День 7 | День 9 >>