PYTHON ΕΝΟΤΗΤΑ 15 – Dictionaries

 



ΕΙΣΑΓΩΓΗ

Στο σημερινό δωρεάν μάθημα Python θα αναλύσουμε τα Dictionaries τα οποία μας προσφέρουν μια πιο αναλυτική μορφή ομαδοποίησης των δεδομένων μας. Αυτή είναι ακόμα μια επιλογή που μας προσφέρει η Python μέσα από τη γενικότερη κατηγορία των Data Structures.

WHAT IS THE DIFFERENCE BETWEEN A LIST AND A DICTIONARY

Τα Lists, όπως τα είδαμε σε προηγούμενα δωρεάν μαθήματα Python, θεωρούνται ordered collections γιατί κάθε στοιχείο της λίστας αποθηκεύεται αμέσως μετά από το προηγούμενο. Αυτή η σειρά που υπάρχει στα δεδομένα μας αναγκάζει  να χρησιμοποιήσουμε index για να καλέσουμε και να διαχειριστούμε τα αποθηκευμένα στοιχεία.

Το Dictionary, από την άλλη πλευρά, δεν χρησιμοποιεί index αλλά το συνδυασμό key-value. Αυτό σημαίνει ότι δεν υπάρχει καμία σημασία στη σειρά που αποθηκεύονται τα δεδομένα για αυτό και άλλωστε δεν είναι διαθέσιμο κάποιο index. Αυτό που μας ενδιαφέρει είναι ότι καλώντας το key μπορούμε να λάβουμε το value το οποίο αντιπροσωπεύει.

 Επίσης μια πιο πρακτική διαφορά είναι ότι τα δεδομένα σε ένα list πρέπει να είναι όλα ομαδοποιημένα με μια κοινή λογική. Δηλαδή το παρακάτω list περιέχει μόνο ομάδες ποδοσφαίρου.

premier = [‘Arsenal’, ‘Chelsea’, ‘Everton’]

Όμως δεν είναι τόσο ξεκάθαρο τι αντιπροσωπεύει κάθε element όταν ομαδοποιούμε διαφορετικών ειδών elements όπως δείχνει το παρακάτω παράδειγμα.

employee = [‘Michail’, ‘training’, ‘Kassapoglou’, ‘Jonathan’]

Βλέποντας το παραπάνω list θα αναρωτιέστε ποιο είναι το όνομα του εργαζόμενου, ποιο είναι το επίθετο του, ποιο είναι το όνομα του manager του κτλ. Αυτή λοιπόν την έλλειψη καλύτερης οργάνωσης έρχεται να καλύψει το Dictionary.

Τα Dictionaries είναι πολύ χρήσιμα όταν χρησιμοποιούμε ένα πολύ μεγάλο μέγεθος δεδομένων προς ανάλυση, όταν στέλνουμε και λαμβάνουμε δεδομένα και γενικότερα όταν δημιουργούμε APIs.

HOW TO CREATE A DICTIONARY

Για να δημιουργήσουμε ένα Dictionary θα πρέπει να χρησιμοποιήσουμε curly brackets ( { } ). Ανάμεσα στα curly brackets ορίζουμε τις ομάδες των key-value ζευγαριών.

Για να αποθηκεύσουμε μια τιμή σε ένα Dictionary, πρέπει να ορίσουμε δύο τιμές: ένα κλειδί (key) με το οποίο θα μπορούμε να βρούμε την πληροφορία, και μια τιμή (value) που είναι η πληροφορία ή το δεδομένο που θέλουμε να αποθηκεύσουμε. Για να μπορέσουμε να βρούμε το value θα πρέπει να καλέσουμε το αντίστοιχο του key.

Ας δούμε ένα απλό παράδειγμα ορισμούς ενός Dictionary.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou',
    'department': 'Training'
}

print(employee)

Output

{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'department': 'Training'}

Στο παραπάνω παράδειγμα τα keys είναι το first_name, last_name και department ενώ τα values είναι το Michail, Kassapoglou, και Training. Για παράδειγμα, για να λάβουμε πίσω την τιμή Training θα πρέπει να καλέσουμε το κλειδί department.

Τα keys μπορούν να είναι μόνο είδος String και Numbers, ενώ τα values μπορεί να είναι όλων των ειδών τα data types ακόμα και lists αλλά και dictionaries.

Τέλος, υπάρχει ένα colon ( : ) που χωρίζει την δήλωση του key από το value, ενώ κάθε στοιχείο από το επόμενο χωρίζεται με comma (  , ).

ACCESSING DICTIONARY INFORMATION

Στο προηγούμενο παράδειγμα, απλά τυπώσαμε όλο το Dictionary στο terminal. Αυτή είναι μια συνηθισμένη πράξη για να λάβουμε γνώση των δεδομένων που περιέχει ένα Dictionary. Αφού γνωρίζουμε τα δεδομένα που περιέχει το Dictionary, σαν επόμενο βήμα είναι να λάβουμε μια συγκεκριμένη πληροφορία από αυτό όπως για παράδειγμα το όνομα του εργαζόμενου. Για να το καταφέρουμε αυτό πρέπει να γράψουμε το όνομα του Dictionary και αμέσως μετά μέσα σε square brackets( [ ] ) το όνομα του key.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou',
    'department': 'Training'
}

print(employee['first_name'])
print(f"The employee's first name is {employee['first_name']}")

Output

Michail
The employee's first name is Michail

GET METHOD

Η Python μας προσφέρει και ένα δεύτερο τρόπο για να λάβουμε την τιμή κάποιου value και αυτός υλοποιείται με την χρήση της get( ) μεθόδου που προσφέρεται από το ίδιο το Dictionary.

Η διαφορά με το προηγούμενο τρόπο είναι ότι αν μέσα στο get( ) αναζητήσουμε κάποιο key το οποίο δεν υπάρχει, το πρόγραμμα μας δεν θα σταματήσει. Δηλαδή δεν θα πάρουμε ένα exception. Απλά η Python θα μας δώσει None σαν απάντηση στο συγκεκριμένο αίτημα. Επίσης μπορούμε να προσθέσουμε και ένα δικό μας μήνυμα σε περίπτωση που δεν βρεθεί το κλειδί που αναζητάμε.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou',
    'department': 'Training'
}

print(employee.get('first_name', 'There is no first name key'))
print(employee.get('id', 'This employee has no company ID yet'))

Output

Michail
This employee has no company ID yet

ADDING LISTS TO DICTIONARIES

Όπως αναφέραμε στην αρχή αυτού του δωρεάν μαθήματος Python, τα Dictionaries μπορούν να συνδυαστούν και με άλλα collections όπως lists. Αυτή η ευελιξία που έχουν, κάνει τα Dictionaries να είναι ένα από τα αγαπημένα collections ανάμεσα στους προγραμματιστές. Ας δούμε ένα απλό παράδειγμα, όπου περνάμε ένα list σαν value σε ένα Dictionary.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou',
    'department': 'Training',
    'specialization': ['Python', 'Spring', 'Dart', 'Java']
}

print(employee['specialization'][0])

Output

Python

ADDING DICTIONARIES TO DICTIONARIES

Όπως έχουμε την δυνατότητα να προσθέσουμε lists σε ένα dictionary, έτσι μπορούμε και να προσθέσουμε και ένα dictionary σε ένα άλλο dictionary. Ας δούμε ένα απλό παράδειγμα για το πώς μπορούμε όχι μόνο να το υλοποιήσουμε αυτό αλλά και να πάρουμε και πληροφορίες από το εσωτερικό dictionary.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou',
    'department': 'Training',
    'specialization': {'Python': 'FastAPI', 'Spring': 'Spring Boot'}
}

print(employee['specialization']['Python'])

Output

FastAPI

ADDING NEW INFORMATION TO A DICTIONARY

Κάθε προγραμματιστής, κάποια στιγμή κατά τη διάρκεια ανάπτυξης κώδικα, θα χρειαστεί όχι μόνο να έχει πρόσβαση στα δεδομένα ενός Dictionary αλλά και να προσθέσει καινούργια στοιχεία σε αυτό.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

employee['department'] = 'Training'
print(employee)

Output

{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'department': 'Training'}

UPDATING INFORMATION IN A DICTIONARY

Για να αλλάξουμε μια υπάρχουσα τιμή, ακολουθούμε ακριβώς τα ίδια βήματα όπως και στο προηγούμενο παράδειγμα – δηλαδή προσθέτουμε ένα καινούργιο ζευγάρι key-value. Εάν το key υπάρχει ήδη τότε θα αντικατασταθεί το value με αυτό που προτείνουμε, ενώ αν δεν υπάρχει το key τότε θα δημιουργηθεί ένα καινούργιο key-value ζευγάρι στο Dictionary.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

employee['specialization'] = 'Python'
print(employee)
employee['specialization'] = 'FastAPI'
print(employee)

Output

{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'specialization': 'Python'}
{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'specialization': 'FastAPI'}

DELETING INFORMATION FROM A DICTIONARY

Για να διαγράψουμε ένα συγκεκριμένο key-value από ένα Dictionary χρησιμοποιούμε την μέθοδο del( ).

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

employee['specialization'] = 'Python'
print(employee)
employee['specialization'] = 'FastAPI'
print(employee)

del employee['specialization']
print(employee)

Output

{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'specialization': 'Python'}
{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'specialization': 'FastAPI'}
{'first_name': 'Michail', 'last_name': 'Kassapoglou'}

Αν και η del( ) μας δίνει την δυνατότητα διαγραφής στοιχείων από ένα Dictionary, θα ήταν καλύτερα να χρησιμοποιούσαμε μεθόδους του ίδιου του Dictionary. Η μέθοδος pop( ) του Dictionary μας επιτρέπει να εκτελέσουμε την πράξη διαγραφής στοιχείων.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

employee['specialization'] = 'Python'
print(employee)
employee.pop('specialization')
print(employee)

Output

{'first_name': 'Michail', 'last_name': 'Kassapoglou', 'specialization': 'Python'}
{'first_name': 'Michail', 'last_name': 'Kassapoglou'}

LOOPING FOR KEYS, VALUES OR KEY_VALUE-PAIRS

Επειδή τα Dictionaries συνήθως περιέχουν πάρα πολλά στοιχεία, για να μπορέσουμε να αποκτήσουμε μια γρήγορη εικόνα τους προγραμματιστικά χρησιμοποιούμε loops. Μπορούμε να χρησιμοποιήσουμε ένα for loop για να δούμε μόνο τα keys, ή μόνο τα values ή ολόκληρο το ζευγάρι key-value.

Για να μπορέσουμε να λάβουμε μια λίστα με όλα τα keys ενός Dictionary, χρησιμοποιούμε την μέθοδο keys( ) μέσα σε ένα for loop.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

for key in employee.keys():
    print(key)
    print(employee[key])

Output

first_name
Michail
last_name
Kassapoglou

Αν τώρα επιθυμούμε να δούμε μόνο τα values, τότε μπορούμε να χρησιμοποιήσουμε την μέθοδο values( ).

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

for value in employee.values():
    print(value)

Output

Michail
Kassapoglou

Τέλος, αν επιθυμείτε να δείτε και τα keys με τα αντίστοιχα τους values τότε μπορείτε να χρησιμοποιήσετε την μέθοδο items( ).

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

for key, value in employee.items():
    print(f"The key is {key} and the value is {value}")

Output

The key is first_name and the value is Michail
The key is last_name and the value is Kassapoglou

USING IN WITH DICTIONARIES

Μπορούμε επίσης να χρησιμοποιήσουμε ένα dictionary σε ένα if statement για να ελέγξουμε αν υπάρχει κάποια τιμή την οποία ψάχνουμε.

app.py

employee = {
    'first_name': 'Michail',
    'last_name': 'Kassapoglou'
}

if 'first_name' in employee:
    print(f"The employee has a name {employee['first_name']}")

Output

The employee has a name Michail

Στο σημερινό δωρεάν μάθημα Python αναλύσουμε αρκετές από τις μεθόδους που μας προσφέρει το Dictionary. Μπορείτε μόνοι σας να εξερευνήσετε τις υπόλοιπες όπως το popitem( ), clear( ) και copy( ).

Μην ξεχάσετε να κάνετε ένα μικρό donationέτσι ώστε αυτό το siteνα μεγαλώσει ακόμα πιο πολύ και να αποκτήσει περισσότερες δυνατότητες onlineπαράδοσης δωρεάν μαθημάτων.

full-width

Post a Comment

0 Comments