2013-11-26 4 views
1
class Photo: 
    'Fields: size, pdate' 
    def __init__(self, size, pdate): 
     self.size = size 
     self.pdate = pdate 

def create_photo_name_dict(pdel): 
    photo_dictionary = {} 
    for photo in pdel: 
     photo_dictionary[photo[0]] = Photo(photo[1],datetime.date(photo[2:]).isoformat()) 
    return photo_dictionary 

create_photo_name_dict([["DSC315.JPG",55,2011,11,13],["DSC316.JPG",53,2011,11,12]]) 

Это производит TypeError: an integer is required. В чем проблема?datetime.date: TypeError: требуется целое число. Зачем?

+0

, в которой линия? – Raiyan

ответ

-1
photo_dictionary[photo[0]] = Photo(photo[1],datetime.date(photo[2:]).isoformat()) 

Здесь, вы получаете строку в photo[0] .. вам нужно типаж его с помощью int(photo[0]).

Проверьте Кроме того, вы получаете photo[0]int в формате string

photo_dictionary[int(photo[0])] = Photo(photo[1],datetime.date(photo[2:]).isoformat()) 
+0

Почему словарь не может содержать строку в качестве ключа? Я дам вам подсказку, это может ... –

6

datetime.date нуждается в целом в качестве параметров. С photo[2:] Вы передаете фрагмент, который является списком. Отсюда и ошибка.

Чтобы решить эту проблему, распакуйте список:

photo_dictionary[photo[0]] = Photo(photo[1],datetime.date(*photo[2:]).isoformat()) 

Вот пример:

>>> datetime.date([2010,8, 7]) 

Traceback (most recent call last): 
    File "<pyshell#71>", line 1, in <module> 
    datetime.date([2010,8, 7]) 
TypeError: an integer is required 
>>> datetime.date(*[2010,8, 7]) 
datetime.date(2010, 8, 7) 
+0

Спасибо большое! Я вижу, где я ошибся. Спасибо! – user3034933

+0

Добро пожаловать! Пожалуйста, соглашайтесь, если этот ответ вам полезен :) – aIKid

Смежные вопросы