Προς το περιεχόμενο

Python - Tuples & Lists


onarcp

Προτεινόμενες αναρτήσεις

Καλησπέρα σας, θα ήθελα βοήθεια σε ένα πρόγραμμα. Έχω μια list of tuples, η οποία περιέχει duplicated tuples, η ερώτηση είναι πως μπορώ να δημιουργήσω μια καινούργια λίστα πλειάδων με το πρώτο element κάθε πλειάδας και πόσες φορές εμφανίζεται.  Σας ευχαριστώ εκ των προτέρων.

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

37 λεπτά πριν, onarcp είπε

Καλησπέρα σας, θα ήθελα βοήθεια σε ένα πρόγραμμα. Έχω μια list of tuples, η οποία περιέχει duplicated tuples, η ερώτηση είναι πως μπορώ να δημιουργήσω μια καινούργια λίστα πλειάδων με το πρώτο element κάθε πλειάδας και πόσες φορές εμφανίζεται.  Σας ευχαριστώ εκ των προτέρων.

 

Αυτο που θελεις γινεται με μια γραμμη κωδικα μονο, αλλα επειδη μαλλον προκειται για ασκηση, καλυτερο ειναι να το προσπαθησεις μονος σου

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το πρόβλημα μου είναι στη for, πρέπει να συγκρίνω το 1ο element από κάθε πλειάδα και να δω πως φορές υπάρχει. Πιστεύω ότι είναι κάτι πολύ εύκολο αλλά για κάποιο λόγο δεν μπορώ να το βρω. Δε θέλω να το κάνω με Counter, που όντως είναι εύκολο.
πχ.
from collections import Counter
Counter(elem[0] for elem in list1)

image.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

4 λεπτά πριν, onarcp είπε
Το πρόβλημα μου είναι στη for, πρέπει να συγκρίνω το 1ο element από κάθε πλειάδα και να δω πως φορές υπάρχει. Πιστεύω ότι είναι κάτι πολύ εύκολο αλλά για κάποιο λόγο δεν μπορώ να το βρω. Δε θέλω να το κάνω με Counter, που όντως είναι εύκολο.
πχ.
from collections import Counter
Counter(elem[0] for elem in list1)

 

image.png

Μέσα στην for και πριν το if (μεταξύ γραμμών 6-7), κάνε ένα print αυτά που συγκρίνεις, δηλαδή το ```item``` και το ```list1[0]```.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Το επιθυμητο αποτελεσμα ετσι οπως το περιεγραψες ειναι λιγο ασαφες:

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

Αυτο που ζητας ειναι ειτε μια λιστα με πλειαδες οπου το πρωτο στοιχειο θα περιεχει το ιτεμ και το δευτερο τη συχνοτητα του, ειτε καποια αλλη δομη, πχ εναν καταλογο με κλειδι το ιτεμ και τιμη τη συχνοτητα.

Για το πρωτο, μπορεις να κανεις το παρακατω:

list1 = [('2022', 'value', 'value'), ('2022', 'value', 'value'), ('2010', 'value', 'value')]

result = []

items = set(i[0] for i in list1)

for i in items:
    count = 0
    for k in list1:
        if k[0]==i:
            count += 1
    result.append((i, count))

>>>print(result)
[('2022', 2), ('2010', 1)]

Εαν ολα τα value ειναι ομοια για καθε ιδιο πρωτο στοιχειο, μπορει να γινει και σε μια γραμμη με τον παρακατω τροπο:

result = [(i, list1.count(i)) for i in set(list1)]

 

Επεξ/σία από archer100
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
31 λεπτά πριν, archer100 είπε

Καταρχην τα επιθυμητο αποτελεσμα ετσι οπως το περιεγραψες ειναι ασαφες:

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

Αυτο που ζητας ειναι ειτε μια λιστα με πλειαδες οπου το πρωτο στοιχειο θα περιεχει το ιτεμ και το δευτερο τη συχνοτητα του, ειτε καποια αλλη δομη, πχ εναν καταλογο με κλειδι το ιτεμ και τιμη τη συχνοτητα.

Για το πρωτο, μπορεις να κανεις το παρακατω:

list1 = [('2022', 'value', 'value'), ('2022', 'value', 'value'), ('2010', 'value', 'value')]

result = []

items = set(i[0] for i in list1)

for i in items:
    count = 0
    for k in list1:
        if k[0]==i:
            count += 1
    result.append((i, count))

>>>print(result)
[('2022', 2), ('2010', 1)]

 

Σε ευχαριστώ πολύ, κάποιες από τις φορές που το προσπάθησα είχα βάλει  εμφωλευμένη for i,j  αλλά για το list1 μόνο, δεν σκέφτηκα καθόλου να χρησιμοποιήσω σύνολα(set). 

Σας ευχαριστώ και τους δύο για τη βοήθεια σας! Καλή συνέχεια!

Επεξ/σία από onarcp
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...