2016-04-27 2 views
1

У меня есть файл pickle, имеющий много объектов. Мне нужно иметь один правильный объект, объединив все остальные объекты в файле. Как мне это сделать. Я пробовал использовать множество команд, но никто не работает.Объединение объектов списка в python

objs = [] 

while True: 
    try: 
     f = open(picklename,"rb") 
     objs.append(pickle.load(f)) 
     f.close() 
    except EOFError: 
     break 

Как и выше, как показано на рисунке.

ОБЪЕКТ сохраненное изображение:

<nltk.classify.naivebayes.NaiveBayesClassifier object at 0x7fb172819198> 
<nltk.classify.naivebayes.NaiveBayesClassifier object at 0x7fb1719ce4a8> 
<nltk.classify.naivebayes.NaiveBayesClassifier object at 0x7fb1723caeb8> 
<nltk.classify.naivebayes.NaiveBayesClassifier object at 0x7fb172113588> 
+0

Как вы выбрали эти объекты? Это повлияет на то, как вы их расклеиваете. – user2357112

+0

@ user2357112 Я мариновал их, используя 'pickle.dump (nltk.NaiveBayesClassifier.train (training_set), f)'. Где я использую набор инструментов NLTK. – Arkham

+0

Нет, я имею в виду, как вы мариновали несколько этих объектов? Если ваш код травления сделал ошибку, которую делает ваш незанятый код, ваш файл, вероятно, имеет только один классификатор, замаринованный в нем. – user2357112

ответ

1

Вы должны использовать .extend(), чтобы добавить все элементы в списке objs:

(Предполагается, что pickle.load(f) возвращает список объектов)

objs.extend(pickle.load(f)) 
+0

Спасибо, сэр за ваш ответ. Сэр Я храню объекты в своем маринованном ядре, которые являются объектами NaiveBayesClassifier, предоставленными в nltk, поэтому, когда я запускаю с использованием вышеуказанного кода, я получаю 'TypeError: объект NaiveBayesClassifier 'не является итерабельным' – Arkham

+0

Что делает' pickle.load (f) «Вернуть точно? Он возвращает один объект «NaiveBayesClassifier» или список объектов «NaiveBayesClassifier»? – ozgur

+0

Сэр Я редактировал ответ, показывающий результат печати 'pickle.load (f)' – Arkham

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