【问题标题】:Prevent getting a generator object防止获取生成器对象
【发布时间】:2015-10-08 22:00:11
【问题描述】:

考虑以下功能:

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 调用或使其成为字典理解 ({key: locs for key, locs ...})。目前,生成器正是您所要求的
  • 什么是word_dict = defaultdict(list)defaultdict() 是自定义函数吗?
  • @KevinGuan 大概是collections.defaultdict
  • @KevinGuan 是的,对不起,我忘了添加'from collections import defaultdict'

标签: python dictionary duplicates


【解决方案1】:

return dict(...)return {key: locs for ...}

第二个版本应该更pythonic,更适合python 2.7或3.1+

【讨论】:

  • 感谢您的帮助。第二个建议正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多