Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Custom_sort

Custom_sort 1 Εβδομάδα 15 Ώρες πριν #5037

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 221
  • Ληφθείσες Ευχαριστίες 58
Παιδειά βάζω εδώ ένα παράδειγμα custom_sort μια που έχουμε καινούργιο κόσμο
Το ανέβασα και στο insomnia.gr
Κατ' αρχήν η δουλειά γίνεται με την sorted https://docs.python.org/3/library/functions.html#sorted
 
sorted(iterable, *, key=None, reverse=False) και όλη η ουσία είναι η key function.
Έστω ότι έχω την παρακάτω λίστα και θέλω να την ταξινομήσω 1α μηχανικοί 
μετά προγραμματιστές μετά γραφίστες μηχανικός < προγραμματιστής > γραφίστας 
οπότε πρέπει να κάνω κάτι custom
 
my_list = [	(1, 'Γιάννης', 35, 'Μηχανικός'),
			(2, 'Γιώργος', 38, 'Προγραμματιστής'),
			(3, 'Κώστας', 48, 'Γραφίστας'),
			(4, 'Αλέκος', 24, 'Μηχανικός'),
			(5, 'Παναγιώτης', 32, 'Γραφίστας'),
			(6, 'Κυριάκος', 27, 'Γραφίστας'),
			(7, 'Μιχάλης', 23, 'Μηχανικός'),
			(8, 'Παναγιώτης', 55, 'Προγραμματιστής'),
			(9, 'Γιάννης', 31, 'Μηχανικός')]
 
Κάνω λοιπόν μια συνάρτηση που πρέπει να πέρνει ένα μόνο όρισμα. 
Το όρισμα αυτό πρέπει να είναι της μορφής που είναι τα στοιχεία της λίστας
 
def custom_sort(object):
	if object[3]=='Μηχανικός':
		return 1
	elif object[3]=='Προγραμματιστής':
		return 2
	elif object[3]=='Γραφίστας':
		return 3
	else:
		return 4
 
και αυτό είναι όλο
 
sorted (my_list, key = custom_sort)
[(1, 'Γιάννης', 35, 'Μηχανικός'), (4, 'Αλέκος', 24, 'Μηχανικός'), (7, 'Μιχάλης', 23, 'Μηχανικός'), (9, 'Γιάννης', 31, 'Μηχανικός'), (2, 'Γιώργος', 38, 'Προγραμματιστής'), (8, 'Παναγιώτης', 55, 'Προγραμματιστής'), (3, 'Κώστας', 48, 'Γραφίστας'), (5, 'Παναγιώτης', 32, 'Γραφίστας'), (6, 'Κυριάκος', 27, 'Γραφίστας')]
>>> 
 
Υπάρχει και πιο απλός τρόπος να κάνεις το συγκεκριμένο χωρίς να γράψεις συνάρτηση. 
Ο παραπάνω όμως τρόπος σε καλύπτει για όλες τις περιπτώσεις 
Τελευταία διόρθωση: 1 Εβδομάδα 15 Ώρες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.658 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου