我正在尝试从推文的 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.setdefault 、 collections.defaultdict 和 collections.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/