Sobes.tech
Middle

Ποιοι περιορισμοί υπάρχουν στις κλειδιά σε dict στην Python;

sobes.tech AI

Απάντηση από AI

Στην Python, τα κλειδιά σε ένα λεξικό (dict) πρέπει να είναι αντικείμενα που μπορούν να υποβληθούν σε hash (αμετάβλητα). Αυτό σημαίνει ότι τα κλειδιά πρέπει να έχουν μια αμετάβλητη κατάσταση και να υλοποιούν τη μέθοδο __hash__().

Κύριοι περιορισμοί:

  • Τα κλειδιά πρέπει να είναι αμετάβλητοι τύποι, π.χ.: συμβολοσειρές (str), αριθμοί (int, float), πλειάδες (tuple), υπό την προϋπόθεση ότι όλα τα στοιχεία της πλειάδας είναι επίσης hashable.
  • Δεν επιτρέπεται η χρήση μεταβλητών τύπων, όπως λίστες (list), σύνολα (set), λεξικά (dict) ως κλειδιά, καθώς δεν είναι hashable.

Παράδειγμα:

valid_dict = {
    "key": 1,
    42: "value",
    (1, 2): "tuple key"
}

invalid_dict = {
    [1, 2]: "list as key"  # θα προκαλέσει TypeError
}

Αν προσπαθήσετε να χρησιμοποιήσετε ένα μεταβλητό αντικείμενο ως κλειδί, η Python θα εμφανίσει σφάλμα TypeError: unhashable type.