Ordenar un diccionario y escribirlo en un archivo CSV

Tengo un diccionario con una tupla como clave y lista como valores

myDict = { (1, 9078752378): [('Smith', 'Bob'), 'Head guard'], (2, 9097615707): [('Burdell', 'George'), 'Lifeguard'], (3, 9048501430): [('Smith', 'Amanda'), 'Lifeguard'], (4, 9026450912): [('Brown', 'John'), 'Lifeguard'], (5, 9027603006): [('Flowers', 'Claudia'), 'Lifeguard'], (6, 9055520890): [('Smith', 'Brown'), 'Head guard'], (7, 9008197785): [('Rice', 'Sarah'), 'Lifeguard'], (8, 9063479070): [('Dodd', 'Alex'), 'New Lifeguard'], (9, 9072301498): [('Sparrow', 'Jack'), 'New Lifeguard'], (10, 9084389677): [('Windsor', 'Harry'), 'New Lifeguard'] } 

Estoy completamente atrapado en cómo escribir este diccionario en un archivo csv en el orden escrito en este formato

 1 9078752378 Smith Bob Head guard 

..y así sucesivamente a 9

¡¡¡POR FAVOR AYUDA!!!

Asumiendo que su formato es consistente, esto debería hacer el truco:

 with open('youfile.csv', 'w') as f: for k,v in sorted(myDict.iteritems()): f.write('{} {} {} {} {}\n'.format(k[0], k[1], v[0][0], v[0][1], v[1])) 

Sin embargo, debo advertirle acerca de un posible error en su formato de salida, si necesita analizar esto nuevamente, quiere citar valores o usar un separador diferente, por ejemplo:

1 9078752378 Smith Bob "Head guard"

 with open("CSV", 'w') as f: f.write('\n'.join([",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())])) 

Explicación –

sorted(myDict.items()) ordenará el diccionario según las claves.

for (a, b), ((c, d), e) in sorted(myDict.items()) desempaquetará sus valores.

",".join(map(str,[a,b,c,d,e])) unirá los valores desempaquetados con una coma.

[",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())] es la lista de comprensión de los valores de coma unida anteriores.

'\n'.join([",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())] se unirá a la lista anterior con nuevas líneas.