python - 使用字典计算文件中的单词数不起作用

标签 python twitter dictionary

我正在尝试从推文的 json 文件中计算主题标签。我的程序的目标是首先提取主题标签并创建一个列表,然后创建这些主题标签的字典(我为此编写了“hashtags_dic”函数)来计算每个主题标 checkout 现的次数。我的问题是,现在程序返回主题标签值,但没有总结每个特定主题标 checkout 现的次数。 我创建了一个名为“hashtags_dic”的函数来创建字典,但它不起作用。 这是代码:

from twitter_DB import load_from_DB

def get_entities(tweet):
    if 'entities' in tweet.keys():
        hashtag_list = [hashtag['text'] for hashtag in tweet['entities']['hashtags']]   
        return hashtag_list
    else:
        return []

def hashtags_dic(hashtag_list):       
hashtag_count = {}
for text in hashtag_list:    
    if text != None: 
        if text in hashtag_count.keys():
            hashtag_count[text] = hashtag_count[text] + 1
        else:
            hashtag_count[text] =  1
return hashtag_count

if __name__ == '__main__':
DBname = 'search-results'
tweet_results = load_from_DB(DBname)
print 'number loaded', len(tweet_results) 

for tweet in tweet_results[:100]:
    labels = get_entities(tweet)
    dic=hashtags_dic(labels)
    print '  Hashtags:', labels[:20]
    print ' Hastags count: ', dic

如果您对我的代码有什么问题提供任何提示或想法,我将不胜感激。提前致谢...诺帕

最佳答案

有多种使用 dict 或 dict 子类进行计数的技术(包括 dict.setdefaultcollections.defaultdictcollections.Counter )。

正如您可能从其名称中猜到的那样,collections.Counter() 非常适合计数任务:-)

import collections
import pprint

hash_counts = collections.Counter(hashtags)
print("Fifty most popular hashtags")
pprint.pprint(hash_counts.most_common(50))

FWIW,你原来的hashtags_dict()函数似乎工作得很好:

>>> hashtags_dic(['obama', 'putin', 'cameron', 'putin', 'obama'])
{'cameron': 1, 'putin': 2, 'obama': 2}

如果您将 hashtag_count 中的 文本替换为 hashtag_count.keys( )。前者进行高速哈希字典查找,后者使用慢速线性搜索构建键列表。

关于python - 使用字典计算文件中的单词数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843573/

相关文章:

python - 遍历数据库中表的列并打印其中的记录数

python - Python (2.7) 可用的数据结构是否比标准库中的标准列表、集合、元组字典更多?

python - 如何在Python中找到最近添加到队列中的项目?

c# - 如何使用 LinqToTwitter 获取标签上的所有推文

python - Django: `MergeDict` 已弃用,请改用 `dict.update()`

Python 装饰器参数

javascript - 渲染或删除表情符号

javascript - Twitter 如何让用户打开一个新窗口进行回复?

带有自定义键的 C++ 映射

c# - 如何提高该算法的性能?