105 lines
4.4 KiB
Markdown
105 lines
4.4 KiB
Markdown
## 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()
|
||
```
|