Junior
Τι είναι οι κατανοήσεις λεξικών (dict comprehensions) στην Python;
sobes.tech AI
Απάντηση από AI
Ο γεννήτορας λεξικών (dict comprehension) είναι μια συμπαγής σύνταξη για τη δημιουργία λεξικών που βασίζεται σε ένα επαναλαμβανόμενο αντικείμενο. Επιτρέπει τη δημιουργία ζευγών "κλειδί: τιμή" χρησιμοποιώντας εκφράσεις και προαιρετικό φιλτράρισμα.
Σύνταξη:
# βασική σύνταξη
dict = {έκφραση_κλειδιού: έκφραση_τιμής for στοιχείο in iterable}
# με συνθήκη
dict = {έκφραση_κλειδιού: έκφραση_τιμής for στοιχείο in iterable if συνθήκη}
Παραδείγματα:
Δημιουργία λεξικού τετραγώνων αριθμών από 0 έως 4:
# λεξικό όπου το κλειδί είναι ο αριθμός και η τιμή το τετράγωνό του
squares = {x: x**2 for x in range(5)}
# squares = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Δημιουργία λεξικού μόνο για ζυγούς αριθμούς:
# λεξικό με τετράγωνα μόνο ζυγών αριθμών
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
# even_squares = {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
Αντιστροφή κλειδιών και τιμών:
original_dict = {'a': 1, 'b': 2, 'c': 3}
# λεξικό με αντιστραμμένα κλειδιά και τιμές
inverted_dict = {value: key for key, value in original_dict.items()}
# inverted_dict = {1: 'a', 2: 'b', 3: 'c'}
Πλεονεκτήματα:
- Συμπαγές: Πιο συμπαγές από αντίστοιχες βρόχους
for. - Αναγνωσιμότητα: Συχνά πιο κατανοητός κώδικας για απλές μετασχηματισμούς.
- Αποδοτικότητα: Μπορεί να είναι λίγο πιο γρήγορος από βρόχους
forσε ορισμένες περιπτώσεις.
Μειονεκτήματα:
- Αναγνωσιμότητα σε πολύπλοκες περιπτώσεις: Για πολύπλοκη λογική, μπορεί να γίνει λιγότερο αναγνώσιμο.
- Έλλειψη παρενεργειών: Δεν προορίζεται για εκτέλεση ενεργειών που δεν σχετίζονται με τη δημιουργία λεξικού (π.χ. εκτύπωση).