Powiedz, że masz regularny dykt z każdym kluczem reprezentującym obiekt jednorazowy, możesz go sformatować i wydrukować na ekranie tak, jak:

d = { key : DT_object}

#Print formatted key with corresponding formatted datetime object.
for key, value in d.iteritems():          
  print '%s %s' % (key,value)

Teraz, jeśli skomplikujemy rzeczy trochę więcej i przechowujemy listę obiektów datetime dla każdego klucza:

from collections import defaultdict

d = { key : [DT_object,DT_object]}
for key, value in d.iteritems():          
  print '%s %s' % (key,value)

Nasz proces formatowania teraz się rozpada. Jaki byłby właściwy kod, aby umożliwić cyklu Pythona przez każdy obiekt na liście i format?

1
DreamPie 13 sierpień 2014, 23:25

2 odpowiedzi

Najlepsza odpowiedź

Użyj join i wykonaj wszystkie ciągi obiektów na liście wartości

 '%s %s' % (key," ".join([str(x) for x in value]))

Używanie str.format z przykładem:

d = { "foo" : [datetime.now(),datetime.now()]}
for key, value in d.iteritems():
    print '{} {}'.format(key, " ".join([str(x) for x in value]))

foo 2014-08-13 20:34:11.940936 2014-08-13 20:34:11.940981

Możesz także użyć jednego z metod datetime, aby zmienić do ciągów:

print '{} {}'.format(key, " ".join([x.isoformat() for x in value]))
foo 2014-08-13T20:36:08.900873 2014-08-13T20:36:08.900910
0
Padraic Cunningham 13 sierpień 2014, 19:32
d = { key : [DT_object,DT_object]}
for key, value in d.iteritems():          
  print '%s %s' % (key,list(map(str,value)))

Może być tym, czego chcesz ...

-1
Joran Beasley 13 sierpień 2014, 21:06