为了账号安全,请及时绑定邮箱和手机立即绑定

给定一个字典列表,我怎样才能找到每个键出现在多少个字典中?

给定一个字典列表,我怎样才能找到每个键出现在多少个字典中?

墨色风雨 2022-06-02 17:29:02
我有一个列表,dictionaries每个dictionary都以单词为键,该单词在特定文档中出现的次数作为值。现在我想知道如何找到dictionaries一个特定单词出现了多少?假设我有以下词典列表:dict1 = {'Association':5, 'Rule':2, 'Mining':3}dict2 = {'Rule':4, 'Mining':1}dict3 = {'Association':4, 'Mining':3}计算一个单词出现在多少词典后的结果:result_dict = {'Association':2, 'Rule':2, 'Mining':3}
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

Counter是一个dict在这里有用的子类:


from collections import Counter



dicts = [dict1, dict2, dict3]


key_counters = [Counter(dictionary.keys()) for dictionary in dicts]

start_counter = Counter()


result_dict = sum(key_counters, start_counter)


assert result_dict == {'Association': 2, 'Rule': 2, 'Mining': 3}


查看完整回答
反对 回复 2022-06-02
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

这可以通过dict理解轻松完成。

首先,从你的 dicts 中列出一个列表:


dict1 = {'Association':5,'Rule':2,'Mining':3}

dict2 = {'Rule':4,'Mining':1}

dict3 = {'Association':4,'Mining':3}


dicts = [dict1, dict2, dict3]

然后,将字典中的所有单词与一个并集组成一组(可能是一种更简洁的方法,但这很有效):


all_words = set().union(*[d.keys() for d in dicts])

然后,计算每个单词出现在多少个字典中:


{k: sum([1 for d in dicts if k in d.keys()]) for k in all_words}

这从您的示例返回了所需的输出。


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信