python_math_stat/docs/python/dictionaries.md
2023-11-22 23:56:55 +03:00

4.4 KiB
Raw Blame History

Dictionaries

  • Структура данных, кот. сод. неупорядоч пос-ть различных о. КЛЮЧ + ЗНАЧЕНИЕ
  • Добавление ключа (НЕ может содержать одинаковых ключей, если добавить, то значение обновится)
  • Списки или словари не могут быть ключами
price = {'opel': 5000, 'toyota': 7000, 'bmw':10000}
price['mazda'] = 4000 -> #добавится в конце  
  • чтобы проверить если ли эл-т в словаре :
duct = {}
key in dict 
key not in dict 
dict[key] = value # присваивание значения ключу
dict[key] # венет значение по ключу
dict.get(key)  # вернет None, если не найдет значение
del dict[key] # удаление всех эл-тов в ключе и самого ключа
  • Чтобы добавить значение в словарь, если он пустой:
d = {}
d[key] = [value] # Добавит ключ с значением, вместо значения можно использовать [], если значение без скобок value, то меняться будет сам элемент (смотри ниже с += )
d[key] += [value] # Добавит value в конец списка с [value], если не будет списка, то ошибка или изменит значение 
  • удаление ключа
del.price['toyota'] #удаление переменной price
price.clear() #удаление ключей в переменной price
  • Замена ключей в нескольких словарях
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'

Методы с словарями:

  • перребор эл-тов словаря:
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() - и ключ и значения

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() - только ключи

dict = {'key1':'value1','key2':'value2'}
for item in dict.keys():
    print(key) -> key1
                  key2 

.values() - только значения

dict = {'key1':'value1','key2':'value2'}
for item in dict.values():
    print(values) -> value1
                     value2 

Dict comprehension

Работа со всеми эл-тами всех ключей

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()
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...}
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), а каждое отдельное слово было отдельным элементом:
    text = input().lower().split()