2010-05-06 11 views
5

Un modo per mantenere manualmente un dizionario in un database consiste nell'appiattirlo in una sequenza di sequenze e passare la sequenza come argomento a cursor.executemany().Convertire una sequenza di sequenze in un dizionario e viceversa

Anche l'opposto è utile, ovvero leggere le righe da un database e trasformarle in dizionari per un uso successivo.

Qual è il modo migliore per passare da myseq a mydict e da mydict a myseq?

>>> myseq = ((0,1,2,3), (4,5,6,7), (8,9,10,11)) 

>>> mydict = {0: (1, 2, 3), 8: (9, 10, 11), 4: (5, 6, 7)} 

risposta

5
mydict = dict((s[0], s[1:]) for s in myseq) 

myseq = tuple(sorted((k,) + v for k, v in mydict.iteritems())) 
+0

Grazie! In realtà non ho bisogno della lista ordinata. – Louis

2
>>> mydict = dict((t[0], t[1:]) for t in myseq)) 

>>> myseq = tuple(((key,) + values) for (key, values) in mydict.items()) 

L'ordinamento delle tuple in myseq non viene mantenuto, dal momento che i dizionari sono non ordinate.

Problemi correlati