## Dictionaries - Структура данных, кот. сод. __неупорядоч__ пос-ть различных о. КЛЮЧ + ЗНАЧЕНИЕ - Добавление ключа (__НЕ__ может содержать одинаковых ключей, если добавить, то значение обновится) - Списки или словари не могут быть ключами ```python price = {'opel': 5000, 'toyota': 7000, 'bmw':10000} price['mazda'] = 4000 -> #добавится в конце ``` - чтобы проверить если ли эл-т в словаре : ```python duct = {} key in dict key not in dict dict[key] = value # присваивание значения ключу dict[key] # венет значение по ключу dict.get(key) # вернет None, если не найдет значение del dict[key] # удаление всех эл-тов в ключе и самого ключа ``` - Чтобы добавить значение в словарь, если он пустой: ```python d = {} d[key] = [value] # Добавит ключ с значением, вместо значения можно использовать [], если значение без скобок value, то меняться будет сам элемент (смотри ниже с += ) d[key] += [value] # Добавит value в конец списка с [value], если не будет списка, то ошибка или изменит значение ``` - удаление ключа ```python del.price['toyota'] #удаление переменной price price.clear() #удаление ключей в переменной price ``` - Замена ключей в нескольких словарях ```python person = { 'first name': 'Jack', 'last name' : 'Brown', 'age': 43, 'hobbies' : ['football', 'singing','photo'], 'children' : ['son':'Michael','daughter':'Pamela'] } print (person['age']) hobbies = person ['hobbies'] print(hobbies[2]) #то же == print(person['hobbies'][2]) ``` Изменение э-та словаря по индексу `person['hobbies'][0]='basketball'` ### Методы с словарями: - перребор эл-тов словаря: ```python d = {'C':14,'A':12, 'T':9,'G':18} for key in d: print (key, end='') # G C A T - неупорядоченный вывод ``` `person.keys()` - получение ключей `person.values()` - получения значений `person.items()` - ключи + значений в виде картежа [('ключ','значение'),('ключ','значение')] ### Цикл `for` для dictionaries \ __`.items()`__ - и ключ и значения ```python for items in dict.items(): print(item) -> ('key1','value1') ('key2','value2') OR for key, items in dict.items(): print (key,items) -> key items key items ``` __`.keys()`__ - только ключи ```python dict = {'key1':'value1','key2':'value2'} for item in dict.keys(): print(key) -> key1 key2 ``` __`.values()`__ - только значения ```python dict = {'key1':'value1','key2':'value2'} for item in dict.values(): print(values) -> value1 value2 ``` ### Dict comprehension Работа со всеми эл-тами всех ключей ```python num_dict = {'first':1,'second':2,'third':3} new_dict = {key:value **3 for key,value in num_dict.items()} # создаем новый словарь с значением в 3 степени print (new_dict) -> {'first':1,'second':8,'third':27} # т.к. если без .items() то раб только с ключами, чтобы оба .items() ``` ```python list = [6,43,-2,11,-55,-12,3,345] num_dict = {number:number**2 for number in list} #ключ - это старый эл-т, value **3 - значение для ключа print (num_dict) -> {6:36,43:1849,-2:4...} ``` ```python num_dict = {number: ('positive' if number >0),(else 'negative' if number <0),(else'zero') for number in list} print (num_dict) -> {6:'positive', 43:'positive',-2:'negative'...} ``` ### Особенности - Записать так, чтобы регистр всех букв при вводе был `lower(or upper)`, а каждое отдельное слово было отдельным элементом: ```python text = input().lower().split() ```