Αυτή η ενότητα εξηγεί πώς να προσθέσετε νέα στοιχεία σε ένα λεξικό (αντικείμενο τύπου υπαγόρευσης) ή να ενημερώσετε την τιμή ενός υπάρχοντος στοιχείου στο Python. Είναι επίσης δυνατή η συνένωση (σύνδεση, συγχώνευση) πολλαπλών λεξικών.
- Προσθέστε και ενημερώστε στοιχεία στο λεξικό καθορίζοντας τα πλήκτρα.
- Συνένωση (συγχώνευση) πολλαπλών λεξικών: ενημέρωση (), | χειριστής, | = χειριστής
- Προσθήκη ή ενημέρωση πολλών στοιχείων: ενημέρωση (), | = τελεστής
Προσθέστε και ενημερώστε στοιχεία στο λεξικό καθορίζοντας τα πλήκτρα.
Μπορείτε να προσθέσετε / ενημερώσετε στοιχεία λεξικού με τον ακόλουθο τρόπο.
Αντικείμενο λεξικού [κλειδί] = τιμή
Όταν καθορίζεται ένα ανύπαρκτο κλειδί, προστίθεται ένα νέο στοιχείο και όταν καθορίζεται ένα υπάρχον κλειδί, η υπάρχουσα τιμή ενημερώνεται (αντικαθίσταται).
d = {'k1': 1, 'k2': 2}
d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}
d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}
Εάν δεν θέλετε να ενημερώσετε την τιμή ενός κλειδιού που υπάρχει, χρησιμοποιήστε τη μέθοδο setdefault ().
Συνδυάστε (συγχώνευση) πολλαπλά λεξικά: ενημέρωση (), | χειριστής, | = χειριστής
update()
Εάν ένα άλλο αντικείμενο λεξικού καθορίζεται ως όρισμα για την ενημέρωση της μεθόδου του αντικειμένου λεξικού (), θα προστεθούν όλα τα στοιχεία του.
Εάν το κλειδί επικαλύπτεται με ένα υπάρχον κλειδί, θα αντικατασταθεί με την τιμή του λεξικού που καθορίζεται στο όρισμα.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Είναι σφάλμα να καθορίσετε πολλά λεξικά στο όρισμα ενημέρωσης ().
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2
Όπως εξηγείται αργότερα, η ενημέρωση () μπορεί να προσθέσει νέα στοιχεία ως ορίσματα λέξεων-κλειδιών (key = value), οπότε απλώς προσθέστε ** στο λεξικό και αναπτύξτε κάθε στοιχείο ως όρισμα λέξης-κλειδιού και περάστε το.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
Όπως και στα προηγούμενα παραδείγματα, η χρήση της ενημέρωσης () θα ενημερώσει το αρχικό αντικείμενο λεξικού.
Εάν θέλετε να δημιουργήσετε ένα νέο λεξικό με τη συγχώνευση πολλαπλών λεξικών, χρησιμοποιήστε τα {** d1, ** d2} (από Python 3.5) ή υπαγόρευση (** d1, ** d2).
Στο Python 3.9 και μεταγενέστερα, είναι επίσης δυνατό να δημιουργήσετε ένα νέο λεξικό χρησιμοποιώντας το | τελεστής που περιγράφεται στη συνέχεια.
| χειριστής, | = χειριστής (Python 3.9 και μεταγενέστερη έκδοση)
Από το Python 3.9, είναι δυνατή η συγχώνευση δύο λεξικών χρησιμοποιώντας το | χειριστής. Όταν δύο λεξικά έχουν το ίδιο κλειδί, η τιμή στα δεξιά έχει προτεραιότητα.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}
| Είναι επίσης δυνατό να συνδυάσετε πολλά λεξικά χρησιμοποιώντας μια σειρά τελεστών.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
+ Όπως με την ενημέρωση (), το αντικείμενο στην αριστερή πλευρά ενημερώνεται.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Προσθήκη ή ενημέρωση πολλών στοιχείων: ενημέρωση (), | = τελεστής
update()
Όταν το κλειδί ορίσματος = τιμή καθορίζεται στη μέθοδο ενημέρωσης (), το κλειδί κλειδιού και η τιμή τιμής θα προστεθούν. Εάν το κλειδί επικαλύπτεται με υπάρχον κλειδί, θα αντικατασταθεί με την τιμή που καθορίζεται στο όρισμα.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Είναι επίσης δυνατό να καθοριστεί μια λίστα (κλειδί, τιμή) ως όρισμα στη μέθοδο ενημέρωσης (). Εάν το κλειδί επικαλύπτεται με ένα υπάρχον κλειδί, θα αντικατασταθεί με την τιμή που καθορίζεται ως όρισμα.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Σε συνδυασμό με τη συνάρτηση zip (), τα στοιχεία μπορούν να προστεθούν από μια λίστα κλειδιών και μια λίστα τιμών.
d = {'k1': 1, 'k2': 2}
keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]
d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
| = χειριστής (Python 3.9 και μεταγενέστερη έκδοση)
Με το χειριστή | =, μπορεί να καθοριστεί μια λίστα (κλειδί, τιμή) στη δεξιά πλευρά.
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Σημειώστε ότι ο καθορισμός λίστας με το | ο χειριστής θα οδηγήσει σε σφάλμα. Υποστηρίζονται μόνο λειτουργίες από λεξικό σε λεξικό.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'