首页 > 解决方案 > 在计数操作python中显示列表中的重复项

问题描述

我有corpus_text文本字符串,然后我将其转换为拆分单词的列表

我需要计算所有单词,但我的算法只计算唯一

corpus_test = 'cat dog tiger tiger tiger cat dog lion'
corpus_test = [[word.lower() for word in corpus_test.split()]]
word_counts = defaultdict(int)
for rowt in corpus_test:
    for wordt in rowt:
        word_counts[wordt] += 1

        v_count = len(word_counts.keys())

        words_list = list(word_counts.keys())

        word_index = dict((word, i) for i, word in enumerate(words_list))

        index_word = dict((i, word) for i, word in enumerate(words_list))

我想向你展示这个算法的输出

v_count
#4

words_list
#['cat', 'dog', 'tiger', 'lion']

word_counts
#defaultdict(int, {'cat': 2, 'dog': 2, 'tiger': 3, 'lion': 1})

word_index
#{'cat': 0, 'dog': 1, 'tiger': 2, 'lion': 3}

index_word
#{0: 'cat', 1: 'dog', 2: 'tiger', 3: 'lion'}

我需要:

index_word
#{0: 'cat', 1: 'dog', 2: 'tiger', 3: 'tiger', 4: 'tiger', 5: 'cat', 6: 'dog', 7:'lion'}

v_count
#8

标签: pythonpython-3.xstringdictionary

解决方案


如果您想要单词索引图,只需...这样做?

index_word = dict(enumerate(word.lower() for word in corpus_test.split()))

或者您必须在您的 中存储列表/索引集word_index,dict 不是多映射,它将单个键映射到单个值(尽管两者都可以是复合的)。

word_counts可以是collection.Counter,它具有有用的功能(如 topN,或按数量复制/展开项目的能力)。


推荐阅读