我想知道列表中的每个项目在列表字典中出现了多少次。键是每个值的出现次数,该值可以跨多个键出现。
所以
{1: ['intel', 'mail', 'com'], 50: ['yahoo', 'com'], 900: ['google', 'mail', 'com'], 5: ['wiki', 'org']}
将包含
com
值,字典中总共有956个com
值,mail.com
个值intel.mail.com
值wiki.org
值以此类推。
我正在尝试解决this problem,因此我决定将所有内容编入字典:
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}
给我那本字典。
答案 0 :(得分:1)
您可以将Counter对象(来自集合)与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})