如何用Python统计JSON文件中特定标签的出现次数?
统计JSON文件特定标签数量的问题修复
原代码可正常遍历所有标签并统计总数,但改写成统计指定标签的函数后始终返回0,问题出在以下几个点:
错误函数的问题分析
- 参数名被覆盖:函数参数
word和内部循环变量word重名,导致传入的目标标签参数完全失效,根本没被用到。 - 类型不匹配的判断:
if word in word_list:里的word是原数据中的字典对象(比如{"tag": "energytwitter"}),但word_list存的是字符串类型的标签内容,两者永远不相等,计数永远不会增加。 - 冗余重复统计:每次循环都把
hashtags列表里的所有元素重新遍历添加到word_list,会重复统计旧标签,逻辑混乱。
修正后的函数
简化逻辑,直接遍历每个数据项,提取标签后和目标标签对比,匹配就计数:
def count_tags(target_tag): count = 0 for item in data: # 检查当前项是否包含hashtags字段 if "hashtags" in item["entities"]: # 遍历当前项的所有hashtag(原代码只取第一个,这里改为遍历所有更严谨) for hashtag in item["entities"]["hashtags"]: tag_content = hashtag["tag"] if tag_content == target_tag: count += 1 return count
补充说明
- 原代码仅提取每个数据项的第一个hashtag,若数据项包含多个hashtag会遗漏,修正后的代码遍历所有hashtag,统计更准确。
- 若需要忽略大小写统计,可将判断改为
tag_content.lower() == target_tag.lower()。
测试示例
统计energytwitter的数量:
print(count_tags("energytwitter"))
内容的提问来源于stack exchange,提问作者Kelly
相关产品推荐
相关产品推荐

