¿Hay una manera fácil de desempaquetar una tupla al usar enumerate in loop?

Considera esto:

the_data = ['a','b','c'] 

Con enumerar este bucle se puede escribir como:

  for index,item in enumerate(the_data): # index = 1 , item = 'a' 

Si the_data = { 'john':'football','mary':'snooker','dhruv':'hockey'}

Bucle con el par de valores clave asignado en el bucle:

 for name,sport in the_data.iteritems(): #name -> john,sport-> football 

Mientras se usa enumerar, los datos se convierten en una tupla dentro del bucle, por lo tanto, se necesita una línea de asignación adicional después de la statement del bucle:

 #can assignment of name & sport happen within the `for-in` line itself ? for index,name_sport_tuple in enumerate(the_data.iteritems()): name,sport = name_sport_tuple # Can this line somehow be avoided ? #index-> 1,name-> john, sport -> football 

Utilizar esta:

 for index, (name, sport) in enumerate(the_data.iteritems()): pass 

Esto es equivalente a:

 >>> a, (b, c) = [1, (2, 3)] >>> a, b, c (1, 2, 3) 

Esto se usa comúnmente con zip combo zip y enumerate también:

 for i, (a, b) in enumerate(zip(seq1, seq2)): pass