10 Χρήσιμες Μέθοδοι Λεξικού Python

Ψάχνετε να μάθετε πώς να εργάζεστε με λεξικά Python; Αυτό το σεμινάριο θα καλύπτει μεθόδους λεξικού Python για ανάγνωση, τροποποίηση και εκτέλεση άλλων κοινών λειτουργιών σε λεξικά Python.

Θα ξεκινήσουμε εξετάζοντας τα βασικά των λεξικών Python και στη συνέχεια θα δημιουργήσουμε ένα παράδειγμα λεξικού και θα το τροποποιήσουμε χρησιμοποιώντας μεθόδους λεξικού Python.

Ας αρχίσουμε…

Μια επισκόπηση των λεξικών Python

Τα λεξικά είναι ενσωματωμένες δομές δεδομένων στην Python. Σας επιτρέπει να αποθηκεύετε στοιχεία σε ζεύγη κλειδιών-τιμών—καθορίζοντας μια συσχέτιση ή αντιστοίχιση μεταξύ των κλειδιών και των τιμών.

Τα κλειδιά σε ένα λεξικό πρέπει να είναι μοναδικά (για να μπορούν να κατακερματιστούν). Μπορείτε να χρησιμοποιήσετε το κλειδί για να αναζητήσετε την τιμή ή να χρησιμοποιήσετε ενσωματωμένες μεθόδους (θα τις μάθετε σύντομα).

Όταν δημιουργείτε ένα λεξικό Python, μπορείτε να αρχικοποιήσετε όλα τα ζεύγη κλειδιών-τιμών ή να αρχικοποιήσετε ένα κενό λεξικό και στη συνέχεια να προσθέσετε τα ζεύγη κλειδιών-τιμών.

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)
<class 'dict'>

# or we can do the following:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

Python Dictionary Methods for Common Operations

Σημείωση: Για να ακολουθήσετε τα παραδείγματα κώδικα, πρέπει να έχετε εγκατεστημένη την Python 3.7 ή νεότερη έκδοση.

Μπορείτε να κωδικοποιήσετε μαζί σε μια Python REPL. Ή ακολουθήστε τον διαδικτυακό επεξεργαστή Python του grtechpc.org.

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

Τώρα που αρχικοποιήσαμε ένα λεξικό Python, ας αρχίσουμε να εξετάζουμε τις διάφορες μεθόδους λεξικού.

Αποκτήστε τα Κλειδιά Λεξικού με κλειδιά()

Μία από τις κοινές λειτουργίες κατά την εργασία με ένα λεξικό Python είναι η πρόσβαση σε όλα τα κλειδιά, τις τιμές και τα ζεύγη κλειδιών-τιμών. Για να λάβετε τα κλειδιά ενός λεξικού, μπορείτε να καλέσετε τη μέθοδο keys() όπως φαίνεται:

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

Λάβετε τις τιμές του λεξικού με τις τιμές()

Η μέθοδος values() επιστρέφει όλες τις τιμές και είναι χρήσιμη όταν θέλετε να επεξεργαστείτε αυτές τις τιμές περαιτέρω.

  Αποκτήστε έναν διακομιστή διαφημίσεων για τον ιστότοπό σας χρησιμοποιώντας αυτές τις 9 πλατφόρμες

Ας αποκτήσουμε πρόσβαση σε όλες τις τιμές στο λεξικό προσώπου:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

Λάβετε ζεύγη κλειδιών-τιμών με αντικείμενα()

Η μέθοδος items() επιστρέφει μια λίστα πλειάδων κλειδιών-τιμών. Επομένως, η κλήση αυτής της μεθόδου στο λεξικό ατόμων επιστρέφει μια λίστα πλειάδων κλειδιών-τιμών:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

Λάβετε ένα ρηχό αντίγραφο με copy()

Η μέθοδος copy() επιστρέφει ένα ρηχό αντίγραφο ενός λεξικού Python.

>>> person_cpy = person.copy()

Εδώ, το person_cpy είναι ένα ρηχό αντίγραφο του λεξικού προσώπου. Ας τροποποιήσουμε αυτό το αντίγραφο ενημερώνοντας το κλειδί ‘όνομα’ σε ‘Bob’.

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

Τώρα, αν εξετάσετε τα περιεχόμενα του λεξικού, μπορείτε να δείτε ότι το ‘όνομα’ έχει ενημερωθεί σε ‘Bob’.

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Ωστόσο, το αρχικό λεξικό προσώπου δεν έχει τροποποιηθεί.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Ορίστε προεπιλεγμένες τιμές με setdefault()

Όταν εργάζεστε με λεξικά Python, είναι σύνηθες να αντιμετωπίζετε εξαίρεση KeyError εάν το κλειδί δεν υπάρχει στο λεξικό. Ακολουθεί ένα παράδειγμα όταν προσπαθούμε να αποκτήσουμε πρόσβαση στο κλειδί «ηλικία»:

>>> person['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Μπορείτε να αποφύγετε τέτοια σφάλματα χρησιμοποιώντας τις ενσωματωμένες μεθόδους setdefault() και get() αντί να αποκτήσετε πρόσβαση στην τιμή όπως παραπάνω.

Η μέθοδος setdefault(key) επιστρέφει dict[‘key’] εάν το κλειδί υπάρχει στο dict.

>>> person.setdefault('name')
'Alice'

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

>>> person.setdefault('address')
>>> person

Εδώ, το κλειδί «διεύθυνση» δεν υπάρχει στο λεξικό ατόμου. Βλέπουμε όμως ότι έχει προστεθεί με την προεπιλεγμένη τιμή None.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

Μπορούμε τώρα να ορίσουμε το κλειδί «διεύθυνση» σε κάποια διεύθυνση:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

Μπορείτε επίσης να καθορίσετε την τιμή στην κλήση μεθόδου, όπως φαίνεται:

>>> person.setdefault('country','USA')
'USA'
>>> person

Καθώς το κλειδί “χώρα” δεν υπάρχει αρχικά στο λεξικό ατόμου, βλέπουμε ότι έχει προστεθεί με το “ΗΠΑ” ως τιμή.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Λάβετε μια συγκεκριμένη τιμή με το get()

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

  Πώς να συνδέσετε τα χειριστήρια GameCube στο Nintendo Switch

Όταν προσπαθούμε να αποκτήσουμε πρόσβαση στην τιμή του κλειδιού ‘όνομα’, παίρνουμε ‘Alice’ καθώς το κλειδί υπάρχει αυτοπροσώπως:

>>> person.get('name')
'Alice'

Το λεξικό ατόμου δεν έχει κλειδί ‘gpa’. Έτσι, όταν προσπαθούμε να πάρουμε την αξία του, δεν παίρνουμε τίποτα στο Python REPL. Ωστόσο, εάν εκτυπώσετε την τιμή, θα λάβετε None.

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

Αλλά αν παρέχετε την προαιρετική προεπιλεγμένη τιμή, λαμβάνουμε αυτήν την τιμή αντί για Καμία.

>>> person.get('gpa','not found')
'not found'

Ωστόσο, η μέθοδος get() δεν προσθέτει το κλειδί ‘gpa’ στο λεξικό.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Κατανόηση της setdefault() έναντι της get()

Αν και οι μέθοδοι setdefault() και get() μπορούν να χρησιμοποιηθούν για τον χειρισμό του KeyError, ας συνοψίσουμε τις διαφορές από όσα μάθαμε:

  • Το dict.setdefault(key,val) προσθέτει το κλειδί με val ως προεπιλεγμένη τιμή. Εάν δεν παρέχεται val, το κλειδί προστίθεται με την προεπιλεγμένη τιμή None.
  • Το dict.get(key,val) επιστρέφει την τιμή που αντιστοιχεί στο κλειδί από το λεξικό Python. Εάν το κλειδί δεν υπάρχει, επιστρέφει val (εάν παρέχεται) ή Κανένα—αλλά δεν προσθέτει το κλειδί στο λεξικό.

Μπορείτε επίσης να χρησιμοποιήσετε το defaultdict στην Python για να χειριστείτε καλύτερα τα KeyErrors.

Ενημέρωση περιεχομένων λεξικού με update()

Μπορείτε να ενημερώσετε ένα υπάρχον λεξικό Python χρησιμοποιώντας ζεύγη κλειδιών-τιμών από άλλο λεξικό. Μπορείτε επίσης να ενημερώσετε με τα περιεχόμενα οποιασδήποτε Python που μπορεί να επαναληφθεί χρησιμοποιώντας τη μέθοδο update().

Ας ορίσουμε ένα λεξικό more_details. Στη συνέχεια, ενημερώνουμε το λεξικό ατόμων με περιεχόμενα από το λεξικό more_details:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

Από την παρακάτω έξοδο, βλέπουμε ότι τα πλήκτρα ‘χόμπι’ και ‘μου αρέσει’ έχουν προστεθεί στο λεξικό ατόμων.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

Αφαιρέστε το στοιχείο που προστέθηκε τελευταία με το popitem()

Η μέθοδος λεξικού popitem() μπορεί να χρησιμοποιηθεί για την αφαίρεση του ζεύγους κλειδιού-τιμής που προστέθηκε τελευταία.

>>> person.popitem()
('likes', 'sweets')

Όπως φαίνεται, η κλήση της μεθόδου popitem() στο λεξικό ατόμων επιστρέφει το ζεύγος κλειδιού-τιμής (‘μου αρέσει’, ‘sweets’)—το στοιχείο που προστέθηκε τελευταία στο λεξικό.

Καταργεί επίσης το ζεύγος κλειδιού-τιμής. Μπορείτε να το επιβεβαιώσετε εξετάζοντας τα περιεχόμενα του λεξικού:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

Αφαιρέστε ένα στοιχείο λεξικού με pop()

Γνωρίζουμε ότι η μέθοδος λεξικού popitem() αφαιρεί και επιστρέφει το τελευταίο ζεύγος κλειδιού-τιμής σε ένα λεξικό Python. Ωστόσο, μερικές φορές μπορεί να χρειαστεί να αφαιρέσουμε άλλα στοιχεία—εκτός από το ζεύγος κλειδιού-τιμής που προστέθηκε τελευταία.

  Γιατί πρέπει να αποκτήσετε μια εικονική επιφάνεια εργασίας τώρα;

Για να γίνει αυτό, μπορούμε να χρησιμοποιήσουμε τη μέθοδο λεξικού Python pop(): χρησιμοποιώντας το .pop(key) στο λεξικό επιστρέφει την τιμή που αντιστοιχεί στο κλειδί και επίσης αφαιρεί το ζεύγος κλειδιού-τιμής από το λεξικό.

Εδώ είναι ένα παράδειγμα:

>>> person.pop('hobby')
'singing'

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

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Εάν περάσουμε ένα κλειδί που δεν υπάρχει, τρέχουμε σε εξαίρεση KeyError, όπως φαίνεται:

>>> person.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Εδώ, αντιμετωπίζουμε μια εξαίρεση KeyError καθώς το κλειδί ‘ηλικίας’ δεν υπάρχει στο λεξικό ατόμου.

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

>>> person.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0

Διαγραφή όλων των στοιχείων λεξικού με clear()

Οι μέθοδοι pop() λεξικού και popitem() αφαιρούν ένα ζεύγος κλειδιού-τιμής κάθε φορά. Εάν θέλετε να διαγράψετε όλα τα στοιχεία σε ένα λεξικό, μπορείτε να χρησιμοποιήσετε τη μέθοδο clear().

>>> person.clear()
>>> person
{}

Όπως φαίνεται, η κλήση της μεθόδου clear() στο λεξικό ατόμου καταργεί όλα τα ζεύγη κλειδιών-τιμών και το λεξικό ατόμου είναι πλέον κενό.

Σύνοψη μεθόδων λεξικού Python

Ακολουθεί μια γρήγορη ανασκόπηση των μεθόδων λεξικού Python που μάθαμε.

MethodSyntaxDescriptionkeys()dict1.keys()Επιστρέφει τα κλειδιά του dict1values()dict1.values()Επιστρέφει τις τιμές του dict1items()dict1.items()Επιστρέφει μια λίστα με όλα τα ζεύγη κλειδιών-τιμών στο dict1copy()dict1.copy() Επιστρέφει ένα ρηχό αντίγραφο της dict1setdefault()dict1.setdefault(key, default_value)– Προσθέτει κλειδί με την προαιρετική default_value ως κλειδί στο dict1 (όταν δεν καθορίζεται, η προεπιλεγμένη τιμή είναι None)
– Επιστρέφει το dict1[key] αν το κλειδί είναι ήδη presentget()dict1.get(key,default_value)– Επιστρέφει dict1[key] εάν υπάρχει κλειδί στο dict1. Διαφορετικά, επιστρέφει την default_value
– Εάν το κλειδί δεν υπάρχει στο dict1 και το default_value δεν έχει καθοριστεί, επιστρέφει Noneupdate()dict1.update(iterable1)Ενημερώνει το dict1 με ζεύγη κλειδιού-τιμής από iterable1popitem()dict1.popitem()Καταργεί και επιστρέφει το τελευταίο ζεύγος κλειδιού-τιμής από dict1pop()dict1.pop(key)– Αφαιρεί και επιστρέφει την τιμή που αντιστοιχεί στο κλειδί: dict1[key]
– Δημιουργεί ένα KeyError εάν το κλειδί δεν υπάρχει στο dict1clear()dict1.clear()Διαγράφει όλα τα στοιχεία από το dict1

συμπέρασμα

Έχετε μάθει πώς να χρησιμοποιείτε κοινές μεθόδους για την εκτέλεση εργασιών ανάγνωσης, ενημέρωσης και διαγραφής σε λεξικά Python. Επιπλέον, μάθατε επίσης πώς οι μέθοδοι get() και setdefault() μπορούν να χρησιμοποιηθούν για τον χειρισμό εξαιρέσεων KeyError επιστρέφοντας μια προεπιλεγμένη τιμή και προσθέτοντας μια καταχώρηση με προεπιλεγμένη τιμή στο λεξικό Python, αντίστοιχα. Μπορείτε επίσης να ταξινομήσετε ένα λεξικό Python κατά κλειδί ή κατά τιμή.

Στη συνέχεια, ελέγξτε τη λίστα των χρήσιμων μεθόδων λίστας Python. Καλή κωδικοποίηση!