← Back to course

Listy: przechowywanie wielu wartości

Listy: przechowywanie wielu wartości

Witaj z powrotem.

W poprzedniej lekcji nauczyłeś się pętli.

Twoje programy nauczyły się powtarzać pracę za pomocą:

for
while

Bardzo dobrze.

Teraz Python może automatycznie powtarzać zadania.

Może liczyć.

Może pytać ponownie.

Może obliczać sumy.

Może pokazywać menu.

Pięknie.

Ale teraz mamy kolejny problem.

Co jeśli musimy przechować wiele wartości?

Na przykład:

Listę produktów.
Listę użytkowników.
Listę wyników.
Listę miast.
Listę zadań.
Listę haseł, których nie powinieneś zapisywać zwykłym tekstem.

Bez list mógłbyś napisać:

product1 = "Keyboard"
product2 = "Mouse"
product3 = "Notebook"

To działa.

Ale bardzo szybko robi się brzydkie.

A jeśli masz 100 produktów?

Naprawdę chcesz pisać:

product100 = "Something"

Proszę, nie.

Python ma lepszy sposób.

Listy.

Listy pozwalają przechowywać wiele wartości w jednej zmiennej.

Bardzo użyteczne.

Bardzo częste.

Bardzo Python.

Czego się nauczysz

W tej lekcji nauczysz się:

Pod koniec tej lekcji twoje programy będą mogły pracować z kolekcjami danych.

To bardzo duży krok.

Bo prawdziwe programy prawie nigdy nie pracują tylko z jedną wartością.

Pracują z wieloma wartościami.

Wieloma użytkownikami.

Wieloma produktami.

Wieloma zadaniami.

Wieloma problemami.

Bardzo realistycznie.

Bardzo programistycznie.

Czym jest lista?

Lista to kolekcja wartości.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

Tutaj:

products

to jedna zmienna.

Ale przechowuje trzy wartości:

Keyboard
Mouse
Notebook

Lista używa nawiasów kwadratowych:

[]

Elementy w środku listy są oddzielone przecinkami:

["Keyboard", "Mouse", "Notebook"]

To jest dużo lepsze niż pisanie:

product1 = "Keyboard"
product2 = "Mouse"
product3 = "Notebook"

Listy trzymają powiązane wartości razem.

Jak małe pudełko.

Ale cyfrowe.

I z mniejszą szansą na losowe kable w środku.

Twoja pierwsza lista

Utwórz plik:

lists.py

Napisz:

products = ["Keyboard", "Mouse", "Notebook"]

print(products)

Uruchom:

python lists.py

albo:

python3 lists.py

Output:

['Keyboard', 'Mouse', 'Notebook']

Python wyświetla całą listę.

Zauważ, że Python pokazuje nawiasy kwadratowe i cudzysłowy.

To normalne.

Pokazuje strukturę listy.

Lista nie jest zwykłym tekstem.

To kolekcja.

Mały pojemnik na wartości.

Bardzo uporządkowany.

Podejrzanie uporządkowany.

Listy mogą przechowywać różne typy

Lista może przechowywać różne typy wartości.

Przykład:

mixed_list = ["Anna", 25, 19.99, True]

print(mixed_list)

Output:

['Anna', 25, 19.99, True]

To działa.

Ale uważaj.

To, że Python na coś pozwala, nie znaczy, że zawsze jest to dobry pomysł.

Często listy są jaśniejsze, kiedy przechowują podobne rzeczy.

Dobrze:

prices = [10.99, 25.50, 5.00]
names = ["Anna", "Marco", "Sofia"]
scores = [90, 85, 72]

Mniej jasno:

random_things = ["Anna", 42, True, "Pizza", 3.14]

Python daje wolność.

Wolność jest piękna.

Wolność może też stworzyć chaos z nawiasami kwadratowymi.

Używaj odpowiedzialnie.

Odczytywanie elementów przez indeks

Każdy element w liście ma pozycję.

Ta pozycja nazywa się indeksem.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

print(products[0])
print(products[1])
print(products[2])

Output:

Keyboard
Mouse
Notebook

Ważne:

Pierwszy element ma indeks 0.

Nie 1.

Python zaczyna liczyć od zera.

Znowu.

Python i zero nadal są bardzo bliskimi przyjaciółmi.

Czyli:

products[0] -> Keyboard
products[1] -> Mouse
products[2] -> Notebook

To jest bardzo ważne.

Indeksy pozwalają odczytywać konkretne elementy listy.

Indeksy zaczynają się od 0

To jedna z najczęstszych niespodzianek dla początkujących.

Możesz oczekiwać, że:

products[1]

oznacza pierwszy element.

Ale nie.

W Pythonie:

products[0]

oznacza pierwszy element.

Przykład:

cities = ["Rome", "Milan", "Naples"]

print(cities[0])

Output:

Rome

Jeśli chcesz drugi element:

print(cities[1])

Output:

Milan

Na początku wydaje się to dziwne.

Potem staje się normalne.

Potem zaczynasz liczyć od zera w głowie.

Wtedy programowanie już cię zmieniło.

Niekoniecznie na gorsze.

Prawdopodobnie.

Odczytywanie ostatniego elementu

Możesz używać ujemnych indeksów.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

print(products[-1])

Output:

Notebook

-1 oznacza:

ostatni element

Inne przykłady:

print(products[-2])
print(products[-3])

Output:

Mouse
Keyboard

Ujemne indeksy liczą od końca.

Bardzo użyteczne.

Bardzo Python.

Bardzo “chcę ostatnią rzecz bez liczenia wszystkiego”.

Python czasem potrafi być miły.

Aktualizowanie elementu listy

Listy można zmieniać.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

products[1] = "Gaming Mouse"

print(products)

Output:

['Keyboard', 'Gaming Mouse', 'Notebook']

Zmieniliśmy element pod indeksem 1.

Przed:

Mouse

Po:

Gaming Mouse

Pamiętaj:

indeks 1 to drugi element

Python robi dokładnie to, o co prosisz.

Nawet jeśli zapomnisz, że indeksy zaczynają się od zera.

Python nie ochroni cię przed twoją własną pewnością siebie.

Bardzo edukacyjne.

Dodawanie elementów przez append()

Możesz dodać element na koniec listy za pomocą append().

Przykład:

products = ["Keyboard", "Mouse"]

products.append("Notebook")

print(products)

Output:

['Keyboard', 'Mouse', 'Notebook']

append() dodaje jeden element na końcu.

To bardzo częste.

Przykład z inputem użytkownika:

products = []

product = input("Product name: ")
products.append(product)

print(products)

Jeśli użytkownik wpisze:

Keyboard

Output:

['Keyboard']

Pusta lista zaczyna się tak:

products = []

Potem możesz dodawać elementy później.

Bardzo użyteczne.

Bardzo elastyczne.

Bardzo “budujemy listę po drodze”.

Dodawanie kilku elementów

Możesz wywołać append() wiele razy.

Przykład:

products = []

products.append("Keyboard")
products.append("Mouse")
products.append("Notebook")

print(products)

Output:

['Keyboard', 'Mouse', 'Notebook']

To przydatne, gdy wartości przychodzą jedna po drugiej.

Na przykład:

input użytkownika
dane z pliku
dane z bazy danych
dane z API

Listy są wszędzie.

Są jak torby na dane.

Ale mniej chaotyczne.

Chyba że włożysz do nich chaotyczne dane.

Wtedy to już twoja wina.

Prawdopodobnie.

Usuwanie elementów przez remove()

Możesz usunąć element po wartości przez remove().

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

products.remove("Mouse")

print(products)

Output:

['Keyboard', 'Notebook']

remove() usuwa pierwszy pasujący element.

Ważne:

products.remove("Mouse")

oznacza:

Znajdź "Mouse" i usuń go.

Nie oznacza:

Usuń element pod indeksem Mouse.

Bo to byłby absurd.

Python akceptuje wiele rzeczy.

Ale nie to.

remove() potrzebuje istniejącego elementu

Jeśli spróbujesz usunąć element, którego nie ma, Python da błąd.

Przykład:

products = ["Keyboard", "Mouse"]

products.remove("Notebook")

Błąd:

ValueError

Dlaczego?

Bo "Notebook" nie znajduje się na liście.

Później nauczymy się lepiej obsługiwać błędy.

Na razie możesz najpierw sprawdzić:

products = ["Keyboard", "Mouse"]

if "Notebook" in products:
    products.remove("Notebook")
else:
    print("Notebook is not in the list.")

To jest bezpieczniejsze.

Program sprawdza przed usunięciem.

Bardzo odpowiedzialnie.

Bardzo dorosło.

W przeciwieństwie do części kodu pisanego o drugiej w nocy.

Sprawdzanie, czy element istnieje

Użyj in, aby sprawdzić, czy element istnieje w liście.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

if "Mouse" in products:
    print("Mouse is available.")
else:
    print("Mouse is not available.")

Output:

Mouse is available.

Możesz też sprawdzić odwrotnie przez not in:

if "Monitor" not in products:
    print("Monitor is missing.")

Output:

Monitor is missing.

To jest bardzo użyteczne.

Będziesz często używać in.

Listy i in są dobrymi przyjaciółmi.

Jak Python i zero.

Ale mniej podejrzani.

Długość listy przez len()

len() mówi, ile elementów jest w liście.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

print(len(products))

Output:

3

To oznacza, że lista ma 3 elementy.

Możesz używać tego w wiadomościach:

products = ["Keyboard", "Mouse", "Notebook"]

print(f"We have {len(products)} products.")

Output:

We have 3 products.

len() jest bardzo użyteczne.

Działa z listami.

Działa też ze stringami.

Przykład:

word = "Python"

print(len(word))

Output:

6

Python lubi liczyć rzeczy.

Bardzo pomocne.

Energia księgowego.

Przechodzenie przez listę pętlą

Listy i pętle świetnie ze sobą współpracują.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

for product in products:
    print(product)

Output:

Keyboard
Mouse
Notebook

To oznacza:

Dla każdego product w liście products, wyświetl product.

To jeden z najważniejszych schematów w Pythonie.

Lista przechowuje wiele wartości.

Pętla przetwarza je jedna po drugiej.

Bardzo potężne.

Bardzo częste.

Bardzo “teraz programujemy naprawdę”.

Lepszy output z listami

Możesz łączyć pętle i f-stringi.

Przykład:

products = ["Keyboard", "Mouse", "Notebook"]

for product in products:
    print(f"Product: {product}")

Output:

Product: Keyboard
Product: Mouse
Product: Notebook

Tak wygląda czyściej.

Możesz też dodać numerowanie:

products = ["Keyboard", "Mouse", "Notebook"]

number = 1

for product in products:
    print(f"{number}. {product}")
    number += 1

Output:

1. Keyboard
2. Mouse
3. Notebook

To działa.

Ale Python ma jeszcze ładniejsze narzędzie do numerowania.

Nauczymy się go niedługo.

Nie teraz.

Jeden smok naraz.

Przechodzenie przez ceny

Listy mogą przechowywać też liczby.

Przykład:

prices = [10.99, 25.50, 5.00]

for price in prices:
    print(f"Price: {price:.2f}")

Output:

Price: 10.99
Price: 25.50
Price: 5.00

Możesz obliczyć sumę:

prices = [10.99, 25.50, 5.00]

total = 0

for price in prices:
    total += price

print(f"Total: {total:.2f}")

Output:

Total: 41.49

To bardzo częsty schemat:

lista liczb
pętla po liczbach
obliczenie sumy

Proste.

Użyteczne.

Bardzo realne.

Wiele faktur zaczyna się właśnie tak.

Potem wchodzą podatki.

I muzyka robi się ciemniejsza.

Znajdowanie największej liczby

Możesz użyć pętli, żeby znaleźć największą liczbę.

Przykład:

scores = [75, 90, 62, 88]

highest_score = scores[0]

for score in scores:
    if score > highest_score:
        highest_score = score

print(f"Highest score: {highest_score}")

Output:

Highest score: 90

Co się dzieje?

Na początku zakładamy, że pierwszy wynik jest największy.
Sprawdzamy każdy score.
Jeśli score jest większy, aktualizujemy highest_score.
Wyświetlamy końcowy wynik.

To klasyczny schemat programowania.

Załóż wartość początkową.

Pętla.

Porównanie.

Aktualizacja.

Bardzo użyteczne.

Bardzo algorytmiczne.

Brzmi elegancko.

Ale to tylko uważne sprawdzanie.

Jak szukanie największego ziemniaka w worku.

Informatyka jest glamour.

Puste listy

Pusta lista nie ma elementów.

Przykład:

products = []

print(products)
print(len(products))

Output:

[]
0

Puste listy są użyteczne, gdy chcesz dodać elementy później.

Przykład:

products = []

products.append("Keyboard")
products.append("Mouse")

print(products)

Output:

['Keyboard', 'Mouse']

Wiele programów zaczyna od pustej listy.

Potem ją wypełnia.

To bardzo normalne.

Pusta lista nie jest bezużyteczna.

Po prostu czeka na dane.

Jak koszyk.

Bardzo cierpliwy koszyk.

Budowanie listy z inputu użytkownika

Utwórz plik:

product_list.py

Napisz:

products = []

product_count = int(input("How many products? "))

for number in range(1, product_count + 1):
    product = input(f"Product {number}: ")
    products.append(product)

print("Your products:")

for product in products:
    print(f"- {product}")

Przykładowa interakcja:

How many products? 3
Product 1: Keyboard
Product 2: Mouse
Product 3: Notebook

Output:

Your products:
- Keyboard
- Mouse
- Notebook

To prawdziwy program budujący listę.

Użytkownik podaje wartości.

Python zapisuje je w liście.

Potem Python przechodzi przez listę i je wyświetla.

Bardzo użyteczne.

Bardzo przyjazne dla początkujących.

Bardzo bliskie prawdziwym aplikacjom.

Listy z warunkami

Możesz używać warunków podczas przechodzenia przez listę.

Przykład:

prices = [10.99, 120.00, 5.50, 250.00]

for price in prices:
    if price >= 100:
        print(f"Expensive item: {price:.2f}")

Output:

Expensive item: 120.00
Expensive item: 250.00

To oznacza:

Przejdź przez wszystkie ceny.
Wyświetl tylko ceny, które są równe 100 lub większe.

To jest filtrowanie.

Filtrowanie oznacza:

Pokaż tylko elementy, które pasują do warunku.

Bardzo częste.

Bardzo użyteczne.

Bardzo podobne do bazy danych.

PostgreSQL patrzy dumnie z rogu pokoju.

Tworzenie nowej przefiltrowanej listy

Możesz stworzyć nową listę z wybranych elementów.

Przykład:

prices = [10.99, 120.00, 5.50, 250.00]

expensive_prices = []

for price in prices:
    if price >= 100:
        expensive_prices.append(price)

print(expensive_prices)

Output:

[120.0, 250.0]

Co się dzieje?

Zaczynamy od pustej listy.
Przechodzimy przez wszystkie ceny.
Jeśli cena jest expensive, dodajemy ją do expensive_prices.
Wyświetlamy nową listę.

To kolejny bardzo częsty schemat.

Pętla.

Sprawdzenie.

Append.

Gratulacje.

Teraz robisz prawdziwe przetwarzanie danych.

Małych danych.

Ale prawdziwych.

Typowy błąd: index out of range

To jest błędne:

products = ["Keyboard", "Mouse", "Notebook"]

print(products[3])

Python daje błąd:

IndexError

Dlaczego?

Bo lista ma 3 elementy.

Ich indeksy to:

0
1
2

Nie ma indeksu 3.

Pamiętaj:

products[0]  # pierwszy element
products[1]  # drugi element
products[2]  # trzeci element

Ostatni indeks to:

długość - 1

Jeśli lista ma 3 elementy, ostatni indeks to 2.

Python nie jest okrutny.

Po prostu znowu liczy od zera.

Klasyczny Python.

Typowy błąd: brak cudzysłowów

Źle:

products = [Keyboard, Mouse, Notebook]

Python myśli, że Keyboard, Mouse i Notebook to nazwy zmiennych.

Ale one nie są zdefiniowane.

Poprawnie:

products = ["Keyboard", "Mouse", "Notebook"]

Stringi potrzebują cudzysłowów.

Zmienne nie.

Ta zasada wraca znowu i znowu.

Jak bug, który myślałeś, że już naprawiłeś.

Ale bardziej przyjazny.

Typowy błąd: złe użycie append()

Źle:

products = ["Keyboard"]

products.append("Mouse", "Notebook")

To daje błąd.

Dlaczego?

Bo append() dodaje jeden element naraz.

Poprawnie:

products = ["Keyboard"]

products.append("Mouse")
products.append("Notebook")

Output:

['Keyboard', 'Mouse', 'Notebook']

Na razie zapamiętaj:

append() dodaje jeden element.

Później nauczysz się innych sposobów dodawania wielu elementów.

Python ma więcej narzędzi.

Oczywiście, że ma.

Skrzynka z narzędziami nigdy się nie kończy.

Typowy błąd: usuwanie brakujących elementów

Źle:

products = ["Keyboard", "Mouse"]

products.remove("Notebook")

To powoduje:

ValueError

Bo "Notebook" nie znajduje się w liście.

Bezpieczniej:

products = ["Keyboard", "Mouse"]

if "Notebook" in products:
    products.remove("Notebook")
else:
    print("Notebook was not found.")

Zawsze uważaj przy usuwaniu elementów.

Listy nie usuwają magicznie rzeczy, których tam nie ma.

To byłby problem filozoficzny.

A Python nie jest w nastroju.

Typowy błąd: mylenie indeksu i wartości

Spójrz na tę listę:

products = ["Keyboard", "Mouse", "Notebook"]

Indeksy:

0, 1, 2

Wartości:

Keyboard, Mouse, Notebook

To odczytuje przez indeks:

print(products[1])

Output:

Mouse

To usuwa przez wartość:

products.remove("Mouse")

Ważna różnica:

indeks = pozycja
wartość = rzeczywisty element

Nie myl ich.

Indeks mówi, gdzie coś jest.

Wartość to sama rzecz.

Bardzo proste.

Bardzo łatwe do zapomnienia.

Bardzo normalne dla początkujących.

Mini program: lista zakupów

Utwórz plik:

shopping_list.py

Napisz:

shopping_list = []

while True:
    item = input("Add item or type q to quit: ")

    if item == "q":
        break

    shopping_list.append(item)

print("Your shopping list:")

for item in shopping_list:
    print(f"- {item}")

Przykład:

Add item or type q to quit: Bread
Add item or type q to quit: Milk
Add item or type q to quit: Eggs
Add item or type q to quit: q

Output:

Your shopping list:
- Bread
- Milk
- Eggs

Ten program używa:

Wiele koncepcji razem.

Bardzo mocna praktyka.

Bardzo realne.

Bardzo użyteczne, jeśli naprawdę pamiętasz, żeby kupić jajka.

Mini program: średni wynik

Utwórz plik:

average_score.py

Napisz:

scores = []

score_count = int(input("How many scores? "))

for number in range(1, score_count + 1):
    score = float(input(f"Score {number}: "))
    scores.append(score)

total = 0

for score in scores:
    total += score

average = total / len(scores)

print(f"Average score: {average:.2f}")

Przykład:

How many scores? 3
Score 1: 80
Score 2: 90
Score 3: 70

Output:

Average score: 80.00

Ten program używa:

To poważny program dla początkujących.

Nie ogromny.

Ale poważny.

Pythonowa zupa znowu robi się bogatsza.

Nadal bez smaku USB.

Dobrze.

Mini program: ceny produktów

Utwórz plik:

product_prices.py

Napisz:

prices = []

product_count = int(input("How many products? "))

for number in range(1, product_count + 1):
    price = float(input(f"Price for product {number}: "))
    prices.append(price)

total = 0

for price in prices:
    total += price

print(f"Total: {total:.2f}")

if total >= 100:
    print("Big order.")
else:
    print("Small order.")

Przykład:

How many products? 3
Price for product 1: 20
Price for product 2: 30
Price for product 3: 60

Output:

Total: 110.00
Big order.

Teraz łączymy:

listy
pętle
warunki
liczby
input
formatowany output

Tak buduje się prawdziwe programy.

Koncepcja po koncepcji.

Linia po linii.

Mała cegła.

Mała cegła.

W końcu pojawia się dom.

Miejmy nadzieję, że nie nawiedzony przez błędy wcięć.

Praktyka

Utwórz plik:

practice_lists.py

Napisz program, który:

Przykładowe rozwiązanie:

names = []

name_count = int(input("How many names? "))

for number in range(1, name_count + 1):
    name = input(f"Name {number}: ")
    names.append(name)

print("Names:")

for name in names:
    print(f"- {name}")

print(f"Total names: {len(names)}")

if "Anna" in names:
    print("Anna is in the list.")
else:
    print("Anna is not in the list.")

Spróbuj.

Zmień imiona.

Spróbuj dodać Anna.

Spróbuj nie dodawać Anna.

Program powinien reagować inaczej.

Listy plus warunki.

Bardzo użyteczne.

Bardzo realne.

Mini wyzwanie

Utwórz plik:

task_manager.py

Twój program powinien:

Menu:

1. Add task
2. Show tasks
q. Quit

Przykładowe rozwiązanie:

tasks = []

while True:
    print("----- Task Manager -----")
    print("1. Add task")
    print("2. Show tasks")
    print("q. Quit")

    choice = input("Choose an option: ").lower()

    if choice == "1":
        task = input("Task: ")
        tasks.append(task)
        print("Task added.")
    elif choice == "2":
        print("Tasks:")

        if len(tasks) == 0:
            print("No tasks yet.")
        else:
            for task in tasks:
                print(f"- {task}")
    elif choice == "q":
        print("Goodbye.")
        break
    else:
        print("Unknown option.")

To prawdziwa mini aplikacja.

Używa:

Mały projekt.

Duży postęp.

Tak zaczynają się narzędzia terminalowe.

Zanim staną się web appkami.

Zanim staną się dashboardami.

Zanim ktoś zapyta:

Can we add login?

I przygoda robi się dłuższa.

Extra challenge: usuwanie zadań

Ulepsz task_manager.py.

Dodaj jeszcze jedną opcję menu:

3. Remove task

Potem pozwól użytkownikowi wpisać nazwę zadania i usunąć je.

Przykładowy pomysł:

elif choice == "3":
    task = input("Task to remove: ")

    if task in tasks:
        tasks.remove(task)
        print("Task removed.")
    else:
        print("Task not found.")

To dodaje:

Teraz twój task manager może dodawać, pokazywać i usuwać zadania.

Nadal mały.

Ale bardzo użyteczny.

Mała aplikacja produktywności.

Spróbuj nie spędzić trzech godzin na jej ulepszaniu.

Albo spędź.

Tak też powstają programiści.

Checklist dla początkujących

Kiedy twój program z listami nie działa, sprawdź:

Czy użyłem nawiasów kwadratowych dla listy?
Czy oddzieliłem elementy przecinkami?
Czy dałem stringi w cudzysłowie?
Czy pamiętam, że indeksy zaczynają się od 0?
Czy próbuję odczytać indeks, który nie istnieje?
Czy użyłem append() z jednym elementem?
Czy sprawdziłem, czy element istnieje przed remove()?
Czy poprawnie wciąłem ciało pętli?
Czy użyłem len(), kiedy potrzebowałem liczby elementów?
Czy nie pomyliłem indeksu z wartością?

Listy na początku są proste.

Potem robią się bardzo potężne.

Większość początkujących błędów z listami pochodzi od indeksów.

Indeksy zaczynają się od zera.

Pierwszy element ma indeks 0.

Ostatni element często to:

list_name[-1]

Zapamiętaj to.

Twój przyszły czas debugowania ci podziękuje.

Prawdopodobnie po cichu.

Podsumowanie

Dzisiaj nauczyłeś się:

To ogromny krok.

Teraz twoje programy mogą przechowywać wiele wartości.

Mogą przetwarzać kolekcje danych.

Mogą budować listy zakupów.

Mogą obliczać sumy.

Mogą zarządzać zadaniami.

Mogą pracować z wieloma inputami.

To dużo bliżej prawdziwego programowania.

Jedna wartość jest fajna.

Wiele wartości to rzeczywistość.

Następna lekcja

W następnej lekcji nauczymy się słowników.

Słowniki pozwalają przechowywać dane przez klucze i wartości.

Zamiast przechowywać tylko:

["Anna", 25, "Rome"]

będziesz mógł napisać:

user = {
    "name": "Anna",
    "age": 25,
    "city": "Rome"
}

To bardzo ważne.

Listy są świetne dla wielu wartości.

Słowniki są świetne dla danych strukturalnych.

A dane strukturalne są wszędzie.

Użytkownicy.

Produkty.

Zamówienia.

Profile.

API.

Bardzo użyteczne.

Bardzo Python.