6.7 Αντιγραφή και εμφωλευμένα λεξίκα

Στην Python, μπορείτε να αντιγράψετε ένα λεξικό με διάφορους τρόπους. Ένας τρόπος είναι να χρησιμοποιήσετε τη μέθοδο copy() για να αντιγράψετε το λεξικό σε ένα νέο λεξικό. Η μέθοδος copy() δημιουργεί ένα νέο λεξικό και αντιγράφει όλα τα ζευγάρια κλειδιών-τιμών από το αρχικό λεξικό στο νέο λεξικό.

Παράδειγμα:

original_dict = {"name": "John", "age": 30, "city": "New York"}

# Αντιγραφή του λεξικού με τη χρήση της μεθόδου copy()
new_dict = original_dict.copy()

print(new_dict)  # Εκτυπώνει: {'name': 'John', 'age': 30, 'city': 'New York'}

Με τη χρήση της μεθόδου copy(), το original_dict αντιγράφεται στο new_dict, δημιουργώντας ένα ξεχωριστό λεξικό με τα ίδια ζευγάρια κλειδιών-τιμών. Έτσι, αν αλλάξετε τα δεδομένα στο new_dict, το original_dict δεν επηρεάζεται, και αντίστροφα.

Παράδειγμα:

my_dict = {'name': 'John', 'age': 25, 'location': 'New York'}

# Αντιγραφή του λεξικού με τη χρήση της μεθόδου copy()
new_dict = my_dict.copy()

print('my_dict:', my_dict)  # Εκτυπώνει το αρχικό λεξικό: {'name': 'John', 'age': 25, 'location': 'New York'}
print('new_dict:', new_dict)  # Εκτυπώνει το αντιγραμμένο λεξικό: {'name': 'John', 'age': 25, 'location': 'New York'}

Ο κώδικας αντιγράφει το λεξικό my_dict στο new_dict χρησιμοποιώντας τη μέθοδο copy(). Στη συνέχεια, εκτυπώνονται τα αρχικά λεξικά my_dict και new_dict. Οι δύο λεξικοί θα περιέχουν τα ίδια ζευγάρια κλειδιών-τιμών. Ωστόσο, είναι ανεξάρτητα από οποιαδήποτε αλλαγή γίνεται σε έναν από τους δύο λεξικούς.

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση dict() για να αντιγράψετε ένα λεξικό σε ένα νέο λεξικό. Ακολουθεί ένα παράδειγμα:

my_dict = {'name': 'John', 'age': 25, 'location': 'New York'}

# Αντιγραφή του λεξικού
new_dict = dict(my_dict)

print('my_dict:', my_dict)  # Εκτύπωση του αρχικού λεξικού
print('new_dict:', new_dict)  # Εκτύπωση του νέου λεξικού

Στο παραπάνω παράδειγμα, έχουμε ένα αρχικό λεξικό my_dict που περιέχει πληροφορίες για ένα άτομο. Χρησιμοποιούμε τη συνάρτηση dict() για να αντιγράψουμε το λεξικό και να δημιουργήσουμε ένα νέο λεξικό με την ίδια δομή και τις ίδιες τιμές. Στη συνέχεια, εκτυπώνουμε τόσο το αρχικό λεξικό my_dict όσο και το νέο λεξικό new_dict, για να δούμε τα αποτελέσματα.

Σωστή χρήση λέξεων: Τέλος, μπορείτε να χρησιμοποιήσετε τη σύνταξη {**original_dict} για να αντιγράψετε ένα λεξικό σε ένα νέο λεξικό.

Με την παραπάνω σύνταξη, μπορείτε να αντιγράψετε ένα λεξικό original_dict σε ένα νέο λεξικό, χρησιμοποιώντας τον ακόλουθο κώδικα:

new_dict = {**original_dict}

Η σύνταξη {**original_dict} είναι γνωστή ως “dictionary unpacking” και δημιουργεί ένα ανεξάρτητο αντίγραφο του αρχικού λεξικού. Μπορείτε να χρησιμοποιήσετε το new_dict για να εκτελέσετε τις επιθυμητές ενέργειες χωρίς να επηρεάσετε το αρχικό λεξικό original_dict.

my_dict = {'name': 'John', 'age': 25, 'location': 'New York'}

# Αντιγραφή του λεξικού χρησιμοποιώντας τη σύνταξη **
new_dict = {**my_dict}

print('my_dict:', my_dict)  # Εκτυπώνει: {'name': 'John', 'age': 25, 'location': 'New York'}
print('new_dict:', new_dict)  # Εκτυπώνει: {'name': 'John', 'age': 25, 'location': 'New York'}

Στο παράδειγμα αυτό, το αρχικό λεξικό my_dict αντιγράφεται στο νέο λεξικό new_dict χρησιμοποιώντας τη σύνταξη **. Αυτή η διαδικασία δημιουργεί ένα νέο ανεξάρτητο λεξικό που περιέχει τα ίδια ζευγάρια κλειδιού-τιμής με το αρχικό λεξικό. Ο τελεστής ** αποσυσκευάζει τα στοιχεία του αρχικού λεξικού και τα προσθέτει στο νέο λεξικό.

[adinserter block=”2″]

Όταν αντιγράφετε ένα λεξικό με τους συνηθισμένους τρόπους στην Python, όπως η εκχώρηση (new_dict = original_dict) ή η χρήση της μεθόδου copy(), δεν δημιουργείται ένα ανεξάρτητο αντίγραφο του λεξικού. Αντ’ αυτού, δημιουργείται μια νέα αναφορά προς το ίδιο αντικείμενο λεξικού. Αυτό σημαίνει ότι αν κάνετε αλλαγές στο αρχικό λεξικό, οι αλλαγές θα επηρεάσουν επίσης το αντίγραφο.

Για να δημιουργήσετε ένα ανεξάρτητο αντίγραφο του λεξικού, μπορείτε να χρησιμοποιήσετε τη μέθοδο dict() ή τη μέθοδο copy.deepcopy() από την ενσωματωμένη βιβλιοθήκη copy. Αυτές οι μέθοδοι δημιουργούν ένα νέο αντίγραφο του λεξικού, ώστε οι αλλαγές που γίνονται στο αρχικό λεξικό να μην επηρεάζουν το αντίγραφο.

Παρακάτω παρουσιάζονται παραδείγματα:

# Αντιγραφή με τη χρήση της μεθόδου dict()
original_dict = {"name": "John", "age": 30}
new_dict = dict(original_dict)
new_dict["age"] = 40
print(original_dict)  # Εκτυπώνει: {'name': 'John', 'age': 30}
print(new_dict)  # Εκτυπώνει: {'name': 'John', 'age': 40}

# Αντιγραφή με τη χρήση της μεθόδου copy.deepcopy()
import copy
original_dict =

 {"name": "John", "age": 30}
new_dict = copy.deepcopy(original_dict)
new_dict["age"] = 40
print(original_dict)  # Εκτυπώνει: {'name': 'John', 'age': 30}
print(new_dict)  # Εκτυπώνει: {'name': 'John', 'age': 40}

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

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

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

# Δημιουργία εμφωλευμένου λεξικού
product = {
  "name": "Laptop",
  "brand": "Dell",
  "price": 700,
  "specs": {
    "CPU": "Intel Core i5",
    "RAM": "8GB",
    "storage": "256GB SSD"
  }
}

# Εκτύπωση του εμφωλευμένου λεξικού
print(product)

Στο παραπάνω παράδειγμα, έχουμε ένα λεξικό με τις πληροφορίες ενός προϊόντος, συμπεριλαμβανομένων του ονόματος του προϊόντος, του κατασκευαστή, της τιμής και των προδιαγραφών του προϊόντος. Οι προδιαγραφές είναι επίσης ένα εμφωλευμένο λεξικό που περιέχει πληροφορίες για τον επεξεργαστή, τη μνήμη RAM και τον αποθηκευτικό χώρο του προϊόντος.

Για να αποκτήσετε πρόσβαση σε ένα στοιχείο στο εμφωλευμένο λεξικό, μπορείτε να χρησιμοποιήσετε τη σύνταξη με τα αγκύλη [key1][key2], όπου key1 είναι το όνομα του πρώτου λεξικού και key2 είναι το όνομα του δεύτερου λεξικού.

Για παράδειγμα, για να αποκτήσετε πρόσβαση στον επεξεργαστή του προϊόντος στο παραπάνω παράδειγμα, μπορείτε να γράψετε:

# Πρόσβαση στο εμφωλευμένο λεξικό
cpu = product["specs"]["CPU"]

# Εκτύπωση του επεξεργαστή
print(cpu)

Στο παραπάνω παράδειγμα, αποκτούμε πρόσβαση στις προδιαγραφές του προϊόντος χρησιμοποιώντας τη σύνταξη product["specs"]["CPU"], και αποθηκεύουμε το όνομα του επεξεργαστή στη μεταβλητή cpu. Έπειτα εκτυπώνουμε το όνομα του επεξεργαστή.

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

[adinserter block=”3″]

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

# Δημιουργία νέου εμφωλευμένου λεξικού
new_specs = {
  "GPU": "NVIDIA GeForce MX350",
  "display": "14-inch FHD"
}

# Προσθήκη του νέου εμφωλευμένου λεξικού στο αρχικό λεξικό
product["specs"].update(new_specs)

# Εκτύπωση του αρχικού λεξικού με το νέο εμφωλευμένο λεξικό
print(product)

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

Σημειώστε ότι μπορείτε να προσθέσετε και άλλα επίπεδα εμφωλευμένων λεξικών στο αρχικό λεξικό, όπως και να διαγράψετε ή να τροποποιήσετε υπάρχοντα στοιχεία στο εμφωλευμένο λεξικό, χρησιμοποιώντας κατάλληλες μεθόδους και σύνταξη ανάκτησης

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

# Δημιουργία αντιγράφου του εμφωλευμένου λεξικού
specs_copy = product["specs"].copy()

# Προσθήκη νέου στοιχείου στο αντίγραφο του εμφωλευμένου λεξικού
specs_copy["battery"] = "42Wh"

# Εκτύπωση του αντιγράφου και του αρχικού εμφωλευμένου λεξικού
print(specs_copy)
print(product["specs"])

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

5 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων