2015-10-08 3 views
2

Учитывая следующую функцию:Предотвратить получение объекта генератора

from collections import defaultdict 

def duplicate_checker(word_list): 
    word_dict = defaultdict(list) 

    for i,item in enumerate(tweet_list): 
     word_dict[item].append(i) 

    return ((key, locs) for key, locs in word_dict.items() if len(locs) >= 1) 

Когда я вызываю функцию со списком слов, он должен проверить наличие дубликатов и возвращает словарь, содержащий слова в списке в качестве ключей, а в качестве значения - список их позиций в списке слов, который использовался в качестве аргумента для вызова функции.

Однако, когда я хочу, чтобы распечатать результаты возвращает это:

<generator object <genexpr> at 0x02E306C0> 

Как я могу сделать его вернуть Dict как я описал выше?

+1

Либо добавьте 'dict' вызов или сделать его словарное понимание (' {ключ: LOCS для key, locs ...} '). В настоящее время генератор * именно то, что вы просите *. – jonrsharpe

+0

Что такое 'word_dict = defaultdict (list)'? Является ли 'defaultdict()' настраиваемой функцией? –

+0

[defaultdict] (https://docs.python.org/2/library/collections.html#defaultdict-objects) – wpercy

ответ

2

Либо return dict(...) или return {key: locs for ...}

Вторая версия должна быть более вещей и предпочтительными для Python 2.7 или 3.1+

+0

Благодарим за помощь. Второе предложение было тем, что я искал. – PeetZ

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