计算值在列表字典中出现的次数,其中键是出现的次数。

问题描述 投票:0回答:1

我想知道,在一个列表的字典中,一个列表中的每个项目出现了多少次。 键是每个值的出现次数,而值可以在多个键中出现。

所以,我想知道。

{1: ['intel', 'mail', 'com'], 50: ['yahoo', 'com'], 900: ['google', 'mail', 'com'], 5: ['wiki', 'org']}

将包含

  • 1 + 50 + 900 + 5 com 值,共计956个 com 字典中的值。
  • 1 + 900 mail.com 价值观
  • 1 intel.mail.com 价值
  • 5 wiki.org 价值观

诸如此类。

我想解决的是 这个问题我决定把所有东西都编成一本字典。

        cpdomains = ["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]
        
        split_number = [x.split(' ') for x in cpdomains]
        
        domain = {int(x[0]): x[1].split('.') for x in split_number}

给了我那本字典

python dictionary dictionary-comprehension
1个回答
1
投票

你可以使用Counter对象(来自collection)与reduce(来自functools),将所有的词数累积到一个大的Counter字典中,并进行总计。

from collections import Counter
from functools import reduce


countWords = {1: ['intel', 'mail', 'com'], 
             50: ['yahoo', 'com'], 
            900: ['google', 'mail', 'com'], 
              5: ['wiki', 'org']}

toCounter  = lambda cw: Counter({w:cw[0] for w in cw[1]})
wordCounts = reduce(Counter.__add__, map(toCounter,countWords.items()) )

print(wordCounts)

Counter({'com': 951, 'mail': 901, 'google': 900, 
       'yahoo': 50,  'wiki': 5,      'org': 5, 'intel': 1})
© www.soinside.com 2019 - 2024. All rights reserved.