Речници.

Част втора на "Трябва да ни е удобно и лесно"

За какво ни служат списъците?

  1. Много стойности под общо име.

  2. Тези стойности "има смисъл" да се намират заедно.

  3. Имат индекси.

  4. Може да проверяваме дали елемент се намира вътре.

  5. Може да добавяме или премахваме елементи.

  6. Може да ги обхождаме.

От какъв тип са индексите на списъците?

configuration = ["RadoRado", "password123"]
print(configuration[0])

Integers. Цели числа.

Речниците в истинския живот?

В един речник, обикновено имаме:

  1. Връзка между две различни думи.

  2. house -> къща

  3. къща -> house

  4. Търсим по определена дума, за да разберем нещо за нея.

  5. Всичко е сортирано по азбучен ред.

Асоциираме една дума с друга дума или значение.

Казваме, че асоциираме ключ със стойност.

От там идва името key-value.

Пак сме на списъци!

Усещате ли накъде бия?

Списъците може да се разгледат като речници.

  1. Key - Value асоциация.

  2. Key-a трябва да е число. Така работят списъците.

  3. Value–то може да е всичко.

Нека имаме списък с конфигурация.

configuration = ["RadoRado", 
                 "password123", 
                 "localhost:3360", 
                 "dbpassword123"]

Какво е?

configuration[0]
configuration[1]
configuration[2]

Имаме проблем. Индексите не дават много смисъл за стойността зад тях.

Така е по-добре:

username = configuration[0]
password = configuration[1]
host_url = configuration[2]

Обаче се сещаме, че сме забравили името на базата

configuration = ["students",
                 "RadoRado", 
                 "password123", 
                 "localhost:3360",
                 "dbpassword123"]

Това вече не работи:

username = configuration[0]
password = configuration[1]
host_url = configuration[2]

Да зависиш от подредба е кофти живот.

person = ["Radoslav Georgiev", 24, "Snowboard"]
  1. 0-та е името

  2. 1 е годините

  3. 2 е хоби.

  4. Ами ако искаме повече от 1 хоби?

list[key] = value

key е число.

  1. Не си кръщаваме кварталите на числа.

  2. Не си кръщаваме улиците на числа.

  3. Не си кръщаваме децата на числа.

  4. Нито пък кучетата и котките.

list[key] = value

Ако key е string?

configuration["username"]
configuration["password"]
person["name"]

Enter, Речници!

Ама .. нали казахме, че списъците са речници?

configuration = {
    "username": "RadoRado",
    "password": "password123",
    "database_name": "students",
    "database_password": "db123"
}

Речниците са известни още като:

  1. Hash

  2. Map

  3. Associative array

  4. Hash Map

Речникът е:

  1. Структура, в която имаме key-value асоциация. (Като списъците)

  2. Ключовете може са низове!

  3. Но може и да са числа.

  4. Стойността може да са всичко.

  5. Няма конкретна подредба на елементите (като в списък)

Общо и разлика между речник и списък?

Различен синтаксис за създаване.

list = [1, 2, 3]
person = { "name": "Rado" }

Общо и разлика между речник и списък?

Еднакъв синтаксис за достъп до индекс.

print(list[0])
print(person["name"])

Общо и разлика между речник и списък?

Различен тип на ключа.

print(list[0])
print(person["name"])

Общо и разлика между речник и списък?

Еднакъв начин за променяне на стойност.

list[0] = 10
person["name"] = "Ivo"

Общо и разлика между речник и списък?

Различен начин за добавяне на елемент.

list = list + [42]
person["age"] = 23

Общо и разлика между речник и списък?

Еднакъв начин за проверка за наличие на елемент.

42 in list # Value check
"name" in person # Key check

Общо и разлика между речник и списък?

Еднакъв начин за oбхождане.

for value in list:
    print(value)

for key in person:
    value = person[key]
    print(key, value)

Какво може да направим с 1 речник?

  1. Да добавим нова двойка ключ-стойност

  2. Да променим стойността на даден ключ

  3. Да проверим дали ключ се намира в речник

  4. Да обходим речника по ключове.

person = {
    "name": "Rado",
    "age": 24,
    "hobbies": ["Programming", "Snowboarding", "Public speaking"]
}


# Happy Birthday!
person["age"] += 1

# Add one more hobby
person["hobbies"] += ["Waling in the park"]

if "friends" not in person:
    # Add friends list
    person["friends"] = ["Ivo", "Maria"]

for key in person:
    value = person[key]

    print(key, value)
classroom = [{ "name": "Ivan", "age": 16}, 
             { "name": "Maria", "age": 23 }]

for student in classroom:
    print(student["name"])
    print(student["age"])

Списък от речници.

Речникът е основен тип.

  1. Int

  2. Float

  3. String

  4. Boolean

  5. NoneType

  6. List

  7. Dict

Речници.

By Hack Bulgaria

Речници.

  • 2,003