Словари Python

Contents
Введение
Создать словарь
Превратить в словарь
Копировать словарь
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

Related Articles
Built-in Collections
Строки
f-string
format string
Списки []
list comprehension: Абстракция списка
Словари {:}
dict comprehension: Абстракция словаря
Множества {}
set comprehension: Абстракция множества
Кортежи ()
Протоколы
Итерация
Python
if, elif, else
Циклы

Search on this site

Subscribe to @aofeed channel for updates

Visit Channel

@aofeed

Feedbak and Questions in Telegram

@aofeedchat