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

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

Δημοσ.

Καλησπέρα σας μπορεί να με βοηθήσει κάποιος

 

for key in datamenu:
     if type(datamenu[key])==dict:
            for key in datamenu[key]:
                print key
 
 
 
list comprehension:
 
[datamenu[key] for key in datamenu if type(datamenu[key])==dict for key in datamenu[key]]
 
 
Ευχαριστω
 
Δημοσ.

Θες να κάνεις τον πάνω κώδικα με list comprehension;

 

πάνω γράφεις print (key) και κάτω datamenu[key] τι θες να έχει η λίστα σου ως στοιχεία

αν θες μόνο τα κλειδιά κάνε το comprehension

[key for key in datamenu if type(datamenu[key])==dict for key in datamenu[key]]

Δημοσ.

Ο γενικός κανόνας που περιγράφεται πως τα κάνουμε είναι

[expression for ... ακολουθούμενα από fors ή ifs]

 

https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

Μπορούμε να γράψουμε δηλαδή κάτι τέτοιο

[math.sqrt((a**2)+(b**2)) for a in c if ( a < 10 and len (c)>20) for b in d if b>100 ]

και ότι άλλο χαζό σκεφτούμε και η μετάφρασή του σε κώδικα είναι

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)) )
Δημοσ.

@spanoskostas

Δεν χρειάζεσαι nested list comprehensions

datamenu = {1: 1, 2: 2, 3: {"a": 1, "b": 2}, 4: {"q": 1, "w": 2}}
for key, value in datamenu.items():
    if isinstance(value, dict):
        print("\n".join(value.keys()))

ή

[print("\n".join(value.keys())) for (key, value) in datamenu.items() if isinstance(value, dict)]

ΥΓ. Εγώ θα το έγραφα με loop, ιδίως αν με ενδιέφερε η εκτύπωση και δεν έκανα κάτι με τη λίστα.

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

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

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

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

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

Σύνδεση

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

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