如何匹配字典1的单词与字典2的键并更新字典2的计数?
实现字典词频更新
根据你的需求,这里提供两种解决方案,对应不同的统计逻辑:
1. 统计单词在所有文档中的总出现次数(含重复)
如果需要统计每个单词在所有文档里的总出现次数(同一文档内重复出现也计数),可以用两层循环遍历:
dict1 = {'Doc-Id1': ['It', 'was', 'summertime'], 'Doc-Id2': ['It', 'is', 'night', 'o', 'dark', 'night']} dict2 = {'It': 1, 'was': 1, 'summertime': 1, 'is': 1, 'night': 1, 'o': 1, 'dark': 1} # 遍历所有文档的单词列表 for words in dict1.values(): for word in words: # 匹配到dict2的键就加1 dict2[word] += 1 print(dict2)
输出结果:
{'It': 3, 'was': 2, 'summertime': 2, 'is': 2, 'night': 3, 'o': 2, 'dark': 2}
2. 统计单词出现的文档数量(去重)
如果需求是同一文档内的重复单词只算一次(完全匹配你给出的示例结果),可以先对每个文档的单词去重再统计:
dict1 = {'Doc-Id1': ['It', 'was', 'summertime'], 'Doc-Id2': ['It', 'is', 'night', 'o', 'dark', 'night']} dict2 = {'It': 1, 'was': 1, 'summertime': 1, 'is': 1, 'night': 1, 'o': 1, 'dark': 1} for words in dict1.values(): # 对当前文档的单词去重,避免同一文档内重复计数 for word in set(words): dict2[word] += 1 print(dict2)
输出结果:
{'It': 2, 'was': 1, 'summertime': 1, 'is': 1, 'night': 2, 'o': 1, 'dark': 1}
补充说明
字典推导式更适合生成新的字典结构,不太适合原地修改已有字典的状态,因此用循环实现这类计数更新会更直观易懂。
内容的提问来源于stack exchange,提问作者user11579493
相关产品推荐
相关产品推荐

