Python 在字典中聚合和重命名键

Python 在字典中聚合和重命名键,python,python-3.x,dictionary,key,rename,Python,Python 3.x,Dictionary,Key,Rename,我有一本单词出现词典和一本同义词词典 单词出现字典示例: word_count = {'grizzly': 2, 'panda': 4, 'beer': 3, 'ale': 5} synonyms = { 'bear': ['grizzly', 'bear', 'panda', 'kodiak'], 'beer': ['beer', 'ale', 'lager'] } 同义词词典示例: word_count = {'gri

我有一本单词出现词典和一本同义词词典

单词出现字典示例:

word_count = {'grizzly': 2, 'panda': 4, 'beer': 3, 'ale': 5}
synonyms = {
            'bear': ['grizzly', 'bear', 'panda', 'kodiak'],
            'beer': ['beer', 'ale', 'lager']
           }
同义词词典示例:

word_count = {'grizzly': 2, 'panda': 4, 'beer': 3, 'ale': 5}
synonyms = {
            'bear': ['grizzly', 'bear', 'panda', 'kodiak'],
            'beer': ['beer', 'ale', 'lager']
           }
我想将单词计数字典合并/重命名为

new_word_count = {'bear': 6, 'beer': 8}
我想我会试试这个:

new_dict = {}
for word_key, word_value in word_count.items():           # Loop through word count dict
    for syn_key, syn_value in synonyms.items():           # Loop through synonym dict
        if word_key in [x for y in syn_value for x in y]: # Check if word in synonyms
            if syn_key in new_dict:                       # If so:
                new_dict[syn_key] += word_value           #   Increment count
            else:                                         # If not:
                new_dict[syn_key] = word_value            #   Create key
但这不起作用,新的字典最终是空的。还有,有没有更简单的方法?可能使用字典理解?

使用dict理解,以及:

使用和:


让我们稍微修改一下你的同义词词典。与其从一个单词映射到其所有同义词的列表,不如让我们从一个单词映射到其父同义词(即
ale
beer
)。这将加快查找速度

synonyms = {
            'bear': ['grizzly', 'bear', 'panda', 'kodiak'],
            'beer': ['beer', 'ale', 'lager']
           }
synonyms = {syn:word for word,syns in synonyms.items() for syn in syns}
现在,让我们制作您的聚合字典:

word_count = {'grizzly': 2, 'panda': 4, 'beer': 3, 'ale': 5}
new_word_count = {}
for word,count in word_count:
    word = synonyms[word]
    if word not in new_word_count:
        new_word_count[word] = 0
    new_word_count[word] += count

非常感谢。这帮助我在我的原始代码中找到了bug。为了简洁起见,我选择了前面答案的词典理解。