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

ΘΕΜΑ: Combinations of elements in tuple

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4818

  • nickthegreek
  • Το Άβαταρ του/της nickthegreek
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 3
Γειά σας παιδιά,
Χρειάζομαι μια μικρή βοήθεια.

Έχω ένα list με paths που το ονομάζω a. Έχω και ένα dictionary new_dict.
Χρησιμοποιώ αυτά τα 2 για να βγάλω ένα tuple
res = [tuple('{}: {}'.format(i, new_dict) for i in t) for t in a]

Το πρόβλημα είναι ότι όταν υπάρχουν πάνω από 1 entries στο dictionary τότε το output (res) είναι:
[("5: ['CVE-2016-3379', 'CVE-2015-3364']", '0: []', '1: []', '8: []')]

Ενώ εγώ το θέλω να είναι
[("5: ['CVE-2016-3379',] 5: ['CVE-2015-3364']", '0: []', '1: []', '8: []')]

Πώς θα μπορούσα να κάνω το 5 απο πάνω να εμφανίζεται ξεχωριστά για το κάθε CVE?

Για να μπορέσω μετά να βγάλω όλα τα combinations.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4819

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Γειά nick
Αν θές δώσε ένα δείγμα από την λίστα σου και από το dictionary και ξαναεξήγησε τι ακριβώς θες γιατί εγώ προσωπικά δεν το κατάλαβα
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4820

  • nickthegreek
  • Το Άβαταρ του/της nickthegreek
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 3
Έχουμε μια λίστα
a [] , που έχει μέσα paths. ([5,0,1,8],[1,10,11,13]) και άλλα. (Aπό 0 μέχρι n paths)
Έχουμε ένα dictionary new_dict όπου σε κάθε θέση έχουμε ένα η περισσότερα CVEs. Tα CVEs τα φορτώνω από list.
Δηλαδή το 5 που βλέπεις πάνω στο α αντιστοιχεί με id:5 στο new_dict 5:[cve1, cve2, cve3]

Εγώ θέλω μέσα στο new_dict να έχω 3 entries με id 5. Δηλ 5:cve1, 5:cve2, 5:cve3

Στο τέλος έχω ένα tuple res = [tuple('{}: {}'.format(i, new_dict) for i in t) for t in a]
που αντιστοιχεί τα elements.
Και βγάζει ["5:CVE1, CVE2, CVE3" ,0,1,8] εγώ θέλω να βγάζει
[5:CVE1, 5:CVE2, 5:CVE3" ,0,1,8] - Και στο 0,1,8 μπορεί να έχει άλλο/α CVE η αλλιώς άδειο.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4821

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Συγνώμη φίλε πάλι δεν κατάλαβα

θες να παράγεις λες tuple και κάνεις λίστα με tuples με strings
res = [tuple('{}: {}'.format(i, new_dict) for i in t) for t in a]???

Αυτό που λες
"Εγώ θέλω μέσα στο new_dict να έχω 3 entries με id 5. Δηλ 5:cve1, 5:cve2, 5:cve3"
δεν γίνεται τα κλειδιά είναι μοναδικά, αυτή είναι η ένοια του dictionary,
εκτός αν ενοείς κάτι άλλο.

Όταν λέω δώσε δείγμα εννοώ τα πρώτα ξέρω εγώ 5 στοιχεία της λίστας και 5 του dictionary και τι αποτέλεσμα θές να παίρνεις γιαυτά τα στοιχεία
Τελευταία διόρθωση: 6 Χρόνια 5 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4840

  • n_karag
  • Το Άβαταρ του/της n_karag
  • Αποσυνδεμένος
  • py____
  • Software Developer at BMLL Technologies, London,UK
  • Δημοσιεύσεις: 9
  • Ληφθείσες Ευχαριστίες 2
Θα ξεκινήσω από τον ορισμό του res

res = [tuple('{}: {}'.format(i, new_dict) for i in t) for t in a]

Όπως επισήμανε και ο Theo, είναι list, οπότε δεν ταιριάζει με αυτό που λες ότι θέλεις να παράγεις, δηλαδή tuple.

Θα προσπαθήσω να δω αν καταλαβαίνω αυτό που θέλεις να πεις, αγνοώντας το προηγούμενο σχόλιο.
Η λίστα a είναι μία λίστα από λίστες

a = [[5, 0, 1, 8], [1, 10, 11, 13], ...]

Το dictionary mydict είναι κάπως έτσι

mydict = {5: ['CVE-2016-3379', 'CVE-2015-3363', 'CVE-2014-3332'], 
          0: [], 
          1: [], 
          8: ['CVE-2015-3367], 
          ...}

Όταν λες
Εγώ θέλω μέσα στο new_dict να έχω 3 entries με id 5. Δηλ 5:cve1, 5:cve2, 5:cve3

μάλλον θέλεις να πεις, ότι θέλεις το res να έχει τέτοια μορφή, σωστά;

Αυτό λοιπόν που θες είναι

[("5:[CVE-2016-3379], 5:[CVE-2015-3363], 5:[CVE-2014-3332]", '0:[]', '1:[]', "8:[CVE-2015-3367]"), 
 ("1: [CVE-...]", ...),
 ... ]

όπου τα κλειδιά 0 και 1 στο mydict είχαν για τιμή άδειες λίστες [] (δηλαδή δεν υπήρχαν καθόλου CVE για αυτά.

Καλά το έχω καταλάβει μέχρι εδώ;

Αν ναι λοιπόν συμφωνούμε στο ζητούμενο, τότε το res θα δίνεται από

res = [tuple(' '.join(['{}: [{}]'.format(i, cev) 
                     for cev in mydict[i]]) or '{}: []'.format(i) 
            for i in path) 
       for path in a]



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

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

2. Στο φόρουμ υπάρχουν εργαλεία για να συντάσεις κώδικα και να αναφέρεσαι σε λόγια που είπαν άλλα μέλη στο νήμα. Χρησιμοποίησέ τα. Θα κάνεις το κείμενο πολύ πιο ευανάγνωστο και θα βοηθήσεις πολύ το μέλος (η τα μέλη) που θα αφιερώσουν χρόνο για να σου προτείνουν μια λύση.

Ελπίζω να ήμουν κατατοπιστικός.
Τελευταία διόρθωση: 6 Χρόνια 5 Μήνες πριν από n_karag.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": nickthegreek

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4841

  • nickthegreek
  • Το Άβαταρ του/της nickthegreek
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 3
Σε ευχαριστώ πολύ!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Combinations of elements in tuple 6 Χρόνια 5 Μήνες πριν #4842

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Για την ιστορία να πούμε ότι πολλές φορές σε πολύπλοκες περιπτώσεις το comprehension μπορεί να μην μας βγαίνει και καλύτερα να πάμε στην αναλυτική δημιουργεία της λίστας με fors και ifs και μετά η εξαγωγή του σε comprehension είναι απλή

docs.python.org/3/tutorial/datastructure...#list-comprehensions

Έχουμε δηλαδή τον παρακάτω κώδικα
mylist=[]
for a in c:
  if (a<10 and len(c)>20):
     for b in d:
        if b>100:
            mylist.append(math.sqrt((a**2)+(b**2)))
 
και θέλουμε να τον κάνουμε με comprehension
Ξεκινάμε από το κομμάτι του append και μετά από πάνω προς τα κάτω 
βάζουμε μέσα τα fors και ifs με τη σειρά
 
mylist=[math.sqrt((a**2)+(b**2)) for a in c if ( a < 10 and len (c)>20) for b in d if b>100 ]

Και το προτιμότερο είναι να το κάνουμε με τον τρόπο που το καταλαβαίνουμε καλύτερα.
Τελευταία διόρθωση: 6 Χρόνια 5 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.337 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

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