2014-08-27 11 views
6

Ho una lista con i valori per oggetto datetime:Python creare oggetto datetime dalla lista dei valori

values = ['2014', '08', '17', '18', '01', '05'] 

convertirlo in int: values = map(int, values)

E ora ho bisogno di creare NewDate:

newdate = datetime.datetime(values[0], values[1], values[2], values[3], values[4], values[5]) 

C'è un modo migliore per farlo?

+0

Ci sono solo 6 elementi nella vostra lista? –

+0

@PadraicCunningham yep – xijhoy

risposta

8

Uso espansione di parametro:

newdate = datetime.datetime(*values) 

Il *expression sintassi in una chiamata prende l'output di expression come una sequenza e si applica ciascun elemento come argomento separato.

Questo funzionerà per qualsiasi sequenza con una lunghezza compresa tra 3 e 8 elementi, a condizione che i primi 7 siano tutti interi e l'8, se presente, è un datetime.tzinfo subclass.

In combinazione con la mappatura di int:

values = ['2014', '08', '17', '18', '01', '05'] 
newdate = datetime.datetime(*map(int, values)) 

Demo:

>>> import datetime 
>>> values = ['2014', '08', '17', '18', '01', '05'] 
>>> datetime.datetime(*map(int, values)) 
datetime.datetime(2014, 8, 17, 18, 1, 5) 
+0

Grazie mille! La prima volta che vedo questo trucco. – xijhoy

Problemi correlati