3 Χρήσιμα Παραδείγματα Πραγματικού Κόσμου χρήσης της ενότητας Python Collections

0
3 Χρήσιμα Παραδείγματα Πραγματικού Κόσμου χρήσης της ενότητας Python Collections

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

Παράδειγμα 1: Καταμέτρηση περιστατικών με μετρητή

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

from collections import Counter

fruits = ['apple', 'banana', 'orange', 'apple', 'orange', 'orange']
fruit_counts = Counter(fruits)

print(fruit_counts)

Παραγωγή:

Counter({'orange': 3, 'apple': 2, 'banana': 1})

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

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

Παράδειγμα 2: Δημιουργία προεπιλεγμένων λεξικών με defaultdict

Η κλάση defaultdict είναι μια άλλη υποκατηγορία λεξικού που παρέχει μια προεπιλεγμένη τιμή για κλειδιά που λείπουν. Αυτό μπορεί να είναι χρήσιμο όταν εργάζεστε με λεξικά που έχουν ένθετες δομές ή όταν θέλετε να αποφύγετε τη σύνταξη κώδικα boilerplate για να χειριστείτε τα κλειδιά που λείπουν. Εδώ είναι ένα παράδειγμα:

from collections import defaultdict

word_counts = defaultdict(int)
words = ['foo', 'bar', 'foo', 'baz', 'foo', 'qux']

for word in words:
    word_counts[word] += 1

print(word_counts['quux'])

Παραγωγή:

0

Σε αυτό το παράδειγμα, δημιουργήσαμε μια προεπιλεγμένη τιμή με προεπιλεγμένη τιμή 0. Στη συνέχεια, κάναμε κύκλο σε μια λίστα λέξεων και αυξήσαμε τον αριθμό για κάθε λέξη στην προεπιλεγμένη τιμή. Όταν εκτυπώσαμε την τιμή για ένα κλειδί που λείπει (‚quux‘), το defaultdict επέστρεψε την προεπιλεγμένη τιμή 0 αντί να αυξήσει ένα KeyError.

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

Παράδειγμα 3: Αποτελεσματική ενημέρωση πολλών λεξικών με το ChainMap

Η κλάση ChainMap είναι μια υποκατηγορία λεξικού που σας επιτρέπει να συνδυάσετε πολλά λεξικά σε μια ενιαία αντιστοίχιση. Παρέχει έναν βολικό τρόπο ενημέρωσης ή πρόσβασης σε πολλά λεξικά ταυτόχρονα, χωρίς να χρειάζεται να τα συγχωνεύσετε σε ένα μόνο λεξικό. Εδώ είναι ένα παράδειγμα:

from collections import ChainMap

dict1 = {'foo': 1, 'bar': 2}
dict2 = {'baz': 3, 'qux': 4}
dict3 = {'foo': 5, 'qux': 6}

combined_dict = ChainMap(dict1, dict2, dict3)

print(combined_dict['foo'])
print(combined_dict['qux'])

Παραγωγή:

1
4

Σε αυτό το παράδειγμα, δημιουργήσαμε τρία λεξικά και τα συνδυάσαμε σε μια ενιαία αντιστοίχιση χρησιμοποιώντας την κλάση ChainMap. Όταν αποκτήσαμε πρόσβαση στο κλειδί ‚foo‘ στο συνδυασμένο λεξικό, το ChainMap επέστρεψε την τιμή από το πρώτο λεξικό (dict1). Όταν αποκτήσαμε πρόσβαση στο κλειδί ‚qux‘, το ChainMap επέστρεψε την τιμή από το δεύτερο λεξικό (dict2), καθώς το κλειδί ‚qux‘ δεν υπήρχε στο πρώτο λεξικό.

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

from collections import ChainMap

default_config = {'debug': False, 'verbose': False, 'log_file': 'app.log'}
local_config = {'verbose': True}

config = ChainMap(local_config, default_config)

print(config['debug'])
print(config['verbose'])
print(config['log_file'])

Παραγωγή:

False
True
app.log

Σε αυτό το παράδειγμα, δημιουργήσαμε δύο λεξικά: default_config και local_config. Τα συνδυάσαμε σε μια ενιαία αντιστοίχιση χρησιμοποιώντας την κλάση ChainMap. Όταν αποκτήσαμε πρόσβαση στο 'debug' κλειδί, το οποίο δεν υπήρχε στο local_configτο ChainMap επέστρεψε την τιμή από default_config. Όταν αποκτήσαμε πρόσβαση στο 'verbose' κλειδί, που υπήρχε και στα δύο local_config και default_configτο ChainMap επέστρεψε την τιμή από local_config. Τέλος, όταν αποκτήσαμε πρόσβαση στο 'log_file' κλειδί, το οποίο υπήρχε μόνο στο default_configτο ChainMap επέστρεψε την τιμή από default_config.

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


Schreibe einen Kommentar