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

105 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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()
```