如何使用带有计数器参数的defaultdict?

时间:2019-05-16 08:38:58

标签: python-3.x

我有一个大约39000个单词的列表。现在,我必须创建一个字典,将单词长度映射到具有该单词长度的单词的字符频率。我必须使用defaultdict与Counter作为参数。我该怎么做呢? 预先感谢

我在不使用defaultdict和counter的情况下创建了字典,并且该字典有效。

好吧,我尝试不带defaultdict(Counter)的代码如下:

def alpha_dict4length(set,length):

    alpha_dict = dict((char,0) for char in string.ascii_lowercase)
    filtered_set = [word for word in set if len(word) == length]
    filtered_length = len(filtered_set)
    joined_set = ''.join(filtered_set)

    for alphabet in string.ascii_lowercase:
        alpha_dict[alphabet] = joined_set.count(alphabet)
        sorted_alpha_dict2list = (sorted(alpha_dict.items(), key=operator.itemgetter(1), reverse=True))
        sorted_alpha_list = [item[0] for item in sorted_alpha_dict2list]
    return sorted_alpha_list

min_length = len(min(training_set,key=len))
max_length = len(max(training_set,key=len))

word_alpha_dict ={}
for i in range(min_length,max_length+1):
    word_alpha_dict[i] = alpha_dict4length(training_set,i)
    print(word_alpha_dict)

现在我要使用defaultdict(Counter)创建字典

相关列表:

['educator',
 'vibration',
 'puddle',
 'eyewitness',
 'controls',
 'jure',
 'baseless',
 'lay',
 'filipino',
 'oks',
 'scuttling',
 'place',
 'inauguration',
 'myofibrils',
 'redeemed',
 'gild',
 'sane',
 'injustices',
 'seniors',
 'carry',
.
.
.

,输出应如下:

{1: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], 
2: ['a', 'e', 'o', 's', 'm', 'i', 'l', 'h', 'p', 'c', 'd', 'n', 't', 'u', 'f', 'r', 'b', 'v', 'w', 'g', 'j', 'k', 'y', 'x', 'q', 'z'], 
3: ['a', 'e', 'o', 'i', 'n', 't', 's', 'p', 'm', 'u', 'r', 'd', 'b', 'g', 'l', 'y', 'h', 'w', 'c', 'f', 'k', 'j', 'v', 'x', 'z', 'q'],
4: ['e', 'a', 's', 'o', 'l', 'i', 'r', 't', 'n', 'd', 'u', 'm', 'h', 'p', 'b', 'c', 'k', 'g', 'w', 'y', 'f', 'v', 'j', 'z', 'x', 'q'], 
5: ['e', 'a', 's', 'r', 'o', 'l', 'i', 't', 'n', 'd', 'c', 'u', 'h', 'm', 'y', 'p', 'b', 'g', 'k', 'f', 'w', 'v', 'z', 'j', 'x', 'q'], 
6: ['e', 'a', 's', 'r', 'i', 'n', 'l', 'o', 't', 'd', 'u', 'c', 'm', 'g', 'h', 'p', 'b', 'y', 'f', 'k', 'w', 'v', 'z', 'j', 'x', 'q'], 
7: ['e', 'a', 's', 'r', 'i', 'n', 't', 'o', 'l', 'd', 'c', 'u', 'g', 'm', 'p', 'h', 'b', 'y', 'f', 'k', 'w', 'v', 'z', 'x', 'j', 'q'], 
8: ['e', 'i', 's', 'a', 'r', 'n', 't', 'o', 'l', 'd', 'c', 'u', 'g', 'm', 'p', 'h', 'b', 'y', 'f', 'v', 'k', 'w', 'z', 'x', 'q', 'j'], 
9: ['e', 'i', 'n', 's', 'a', 'r', 't', 'o', 'l', 'c', 'd', 'u', 'g', 'm', 'p', 'h', 'b', 'y', 'f', 'v', 'k', 'w', 'z', 'x', 'q', 'j'], 
10: ['e', 'i', 'n', 's', 't', 'a', 'r', 'o', 'l', 'c', 'd', 'u', 'g', 'p', 'm', 'h', 'b', 'y', 'f', 'v', 'w', 'k', 'z', 'x', 'q', 'j'], 
11: ['e', 'i', 'n', 't', 'a', 's', 'r', 'o', 'l', 'c', 'u', 'd', 'p', 'm', 'g', 'h', 'b', 'y', 'f', 'v', 'k', 'w', 'x', 'z', 'q', 'j'], 
12: ['e', 'i', 'n', 't', 'a', 's', 'r', 'o', 'l', 'c', 'u', 'p', 'm', 'd', 'g', 'h', 'y', 'b', 'v', 'f', 'z', 'k', 'w', 'x', 'q', 'j'], 
13: ['i', 'e', 'n', 't', 'a', 'o', 's', 'r', 'c', 'l', 'p', 'm', 'u', 'd', 'g', 'h', 'y', 'b', 'v', 'f', 'z', 'x', 'k', 'w', 'q', 'j'], 
14: ['i', 'e', 'n', 't', 'a', 's', 'o', 'r', 'l', 'c', 'p', 'u', 'm', 'd', 'h', 'g', 'y', 'b', 'v', 'f', 'z', 'x', 'k', 'w', 'q', 'j'], 
15: ['i', 't', 'n', 'o', 'e', 'a', 's', 'r', 'l', 'c', 'p', 'y', 'd', 'm', 'u', 'h', 'g', 'f', 'b', 'v', 'z', 'k', 'x', 'w', 'q', 'j'], 
16: ['i', 't', 'a', 'n', 'e', 'o', 'r', 'l', 's', 'c', 'p', 'm', 'h', 'y', 'u', 'd', 'g', 'b', 'f', 'z', 'v', 'x', 'k', 'q', 'w', 'j'], 
17: ['i', 't', 'e', 'a', 'n', 'r', 'o', 's', 'l', 'c', 'p', 'h', 'm', 'd', 'y', 'u', 'g', 'z', 'b', 'v', 'f', 'j', 'k', 'w', 'x', 'q'], 
18: ['i', 't', 'e', 's', 'o', 'r', 'n', 'a', 'c', 'l', 'p', 'd', 'h', 'm', 'y', 'u', 'g', 'f', 'b', 'k', 'v', 'z', 'j', 'q', 'w', 'x'], 
19: ['o', 'i', 'n', 't', 'a', 'r', 'c', 'e', 's', 'l', 'u', 'd', 'g', 'f', 'h', 'm', 'p', 'y', 'z', 'b', 'j', 'k', 'q', 'v', 'w', 'x'], 
20: ['i', 't', 'n', 'a', 'o', 'l', 's', 'u', 'z', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', 'p', 'q', 'r', 'v', 'w', 'x', 'y'], 
21: ['o', 'c', 'a', 'e', 'h', 'i', 'l', 'm', 'p', 'r', 's', 'g', 'n', 't', 'u', 'y', 'b', 'd', 'f', 'j', 'k', 'q', 'v', 'w', 'x', 'z'], 
22: ['e', 'l', 'n', 'a', 's', 'b', 'f', 'k', 'o', 't', 'u', 'y', 'z', 'c', 'd', 'g', 'h', 'i', 'j', 'm', 'p', 'q', 'r', 'v', 'w', 'x']}

其中的键是指训练集中单词的长度,而值是指最有可能首先出现的字符。

0 个答案:

没有答案