Словари Python

Содержание
Введение
Создать словарь
Превратить в словарь
Копировать словарь
Update: добавить один словарь к другому либо изменить значения
Iteration: перебор элементов словаря
Items: перебор кортежами из пар ключ-значение
in, not in, del
pprint: читаемый вывод
get()
Похожие статьи

Введение

Официальная документация: 1 , 2

Создать словарь

Чтобы создать словарь нужно воспользоваться фигурными скобками {}

{key:value}

Ключ должен быть неизменяемым объектом, то есть число, строка или кортеж подойдут, а, например список нет

На сохранение порядка элементов в словаре рассчитывать нельзя.

>>> urls = { ... 'Forward': 'https://forward.bike', ... 'Shulz': 'https://velodrive.ru', ... 'Stels': 'https://velosklad.ru', ... 'TB': 'https://topbicycle.ru' ... }

Получился словарь из четырёх пар "ключ: значение"

>>> urls['Stels']

'https://velosklad.ru'

В качестве ключей можно использовать и числа

def Test(): numbers = { 0: "Zero", 1: "One" } o = numbers[0] print(o) if __name__ == "__main__": Test()

Zero

Превратить в словарь

С помощью функции dict() можно превратить в словарь список кортежей

names_and_ages = [('Alice', 32), ('Bob', 48), ('Charlie', 28), ('Daniel', 33)] d = dict(names_and_ages) print(d)

{'Alice': 32, 'Bob': 48, 'Charlie': 28, 'Daniel': 33}

Или перечисленные через запятую аргументы типа ключ-значение

phonetic = dict(a="alfa", b="bravo", c="charlie", d="delta", e="echo", f="foxtrot") print(phonetic)

{'a': 'alfa', 'b': 'bravo', 'c': 'charlie', 'd': 'delta', 'e': 'echo', 'f': 'foxtrot'}

Копирование словарей как и списков это неполное (shallow copy) копирование то есть копируются не объекты а ссылки на них. Подробно разницу можно увидеть здесь

# copy dict d = dict(it="urn.su", bikes="topbicycle.ru", travel="heihei.ru") e = d.copy() print(e) f = dict(e) print(f) # Next method will not create a copy # g will be the same object g = e print(g) print(e is d) print(e == d) print(f is e) print(f == e) print(g is e) print(g == e) # Let's prove g is not a copy d["it"] = "eth1.ru" print('d["it"] = "eth1.ru"') print('d["it"] = "eth1.ru"') print("d: ", d) print("e: ", e) print("f: ", f) print("g: ", g) e["it"] = "devhops.ru" print('e["it"] = "devhops.ru"') print("e: ", e) print("f: ", f) print("g: ", g)

{'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} False True False True True True d["it"] = "eth1.ru" d: {'it': 'eth1.ru', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} e: {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} f: {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} g: {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} e["it"] = "devhops.ru" e: {'it': 'devhops.ru', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} f: {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} g: {'it': 'devhops.ru', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'}

Update: добавить один словарь к другому

# update d = dict(it="urn.su", bikes="topbicycle.ru", travel="heihei.ru") e = dict(hotels="booking.com", flights="aviasales.ru", trains="tutu.ru") print("d: ", d) print("e: ", e) e.update(g) print("e.update(g)") print("e: ", e)

d: {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'} e: {'hotels': 'booking.com', 'flights': 'aviasales.ru', 'trains': 'tutu.ru'} e.update(g) e: {'hotels': 'booking.com', 'flights': 'aviasales.ru', 'trains': 'tutu.ru', 'it': 'devhops.ru', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'}

С помощью update() можно не только добавить новые но и изменить старые значения.

print('d.update(it="eth1.ru")') print("d: ", d)

d.update(it="eth1.ru") d: {'it': 'eth1.ru', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru'}

Iteration: перебор элементов словаря

# iteration sites = dict( it="urn.su", bikes="topbicycle.ru", travel="heihei.ru", hotels="booking.com", flights="aviasales.ru", trains="tutu.ru" ) for key in sites: print(f"{key} => {sites[key]}")

it => urn.su bikes => topbicycle.ru travel => heihei.ru hotels => booking.com flights => aviasales.ru trains => tutu.ru

print("\nkeys:\n") for key in sites: print(key) for key in sites.keys(): print(key) print("\nvalues:\n") for value in sites.values(): print(value)

keys: it bikes travel hotels flights trains it bikes travel hotels flights trains values: urn.su topbicycle.ru heihei.ru booking.com aviasales.ru tutu.ru

Items: перебор кортежами из пар ключ-значение

С помощью items() можно перебирать парами ключ-значени, возвращаться будет кортеж (tuple)

# items print("\nitems:\n") for key, value in sites.items(): print(f"{key} => {value}")

items: it => urn.su bikes => topbicycle.ru travel => heihei.ru hotels => booking.com flights => aviasales.ru trains => tutu.ru

in, not in, del

# in and not in print("in and not in\n") sites = dict( it="urn.su", bikes="topbicycle.ru", travel="heihei.ru", hotels="booking.com", flights="aviasales.ru", trains="tutu.ru" ) print("it" in sites) # True print("urn.su" in sites) # False since urn.su is not a key print("velodrive" not in sites) # True # del del sites["hotels"] print('del sites["hotels"]') print(sites)

in and not in True False True del sites["hotels"] {'it': 'urn.su', 'bikes': 'topbicycle.ru', 'travel': 'heihei.ru', 'flights': 'aviasales.ru', 'trains': 'tutu.ru'}

Модификация значений внутри словаря

m = { 'H': [1, 2, 3], 'He': [3, 4], 'Li': [6, 7], 'Be': [7, 9, 10], 'B': [10, 11], 'C': [11, 12, 13, 14] } print(m) m['H'] += [4, 5, 6, 7] print(m) m['N'] = [13, 14, 15]

{'H': [1, 2, 3], 'He': [3, 4], 'Li': [6, 7], 'Be': [7, 9, 10], 'B': [10, 11], 'C': [11, 12, 13, 14]} {'H': [1, 2, 3, 4, 5, 6, 7], 'He': [3, 4], 'Li': [6, 7], 'Be': [7, 9, 10], 'B': [10, 11], 'C': [11, 12, 13, 14]} {'B': [10, 11], 'Be': [7, 9, 10], 'C': [11, 12, 13, 14],

pprint: читаемый вывод

С помощью pprint() можно вывести словарь на экран в читаемом виде

from pprint import pprint as pp m = { 'H': [1, 2, 3], 'He': [3, 4], 'Li': [6, 7], 'Be': [7, 9, 10], 'B': [10, 11], 'C': [11, 12, 13, 14] 'N': [13, 14, 15] } pp(m)

'H': [1, 2, 3, 4, 5, 6, 7], 'He': [3, 4], 'Li': [6, 7], 'N': [13, 14, 15]}

get()

С помощью метода get() можно получить значение по ключу.

Синтаксис

Dict.get(key, default=None)

Параметры:

key: имя ключа, значение которого нужно получить

Value: (Необязательный) значение которое нужно вернуть, если ключ не найден. По умолчанию возвращает None.

Пример: рассмотрим словарь где ключи - это названия городов Андалусии (Испания), а значение - это численность их населения в тысячах человек

Применим get() только с одним аргументом, затем с двумя для города из списка и города не из списка

cities = {"Benalmadena": 67, "Cordoba": 325, "Fuengirola": 75, "Malaga": 569, "Torremolinos": 68} print(cities.get("Cordoba")) print(cities.get("Malaga", "Unknown")) print(cities.get("Riga", "Unknown"))

325 569 Unknown

Рига - это город в Латвии а не в Испании, поэтому get() вернул Unknonw

Похожие статьи
Built-in Collections
Строки
f-string
format string
Списки []
list comprehension: Абстракция списка
Словари {:}
dict comprehension: Абстракция словаря
Множества {}
set comprehension: Абстракция множества
Кортежи ()
Протоколы
Итерация
Python
if, elif, else
Циклы
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Хотите поддержать сайт материально
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......