Что такое простая в адаптации альтернатива мультидикту для Python 2? - PullRequest
0 голосов
/ 29 октября 2019

Заголовок говорит сам за себя.

Я пытаюсь запустить адаптацию к этому коду от virtualenv, который не поддерживает Python 3 и, как multidict не делает 't поддерживает Python 2 , я хотел бы рассмотреть альтернативы этому модулю, которые могли бы работать с Python 2, прежде чем рассматривать возможность изменения моего хоста.

Ключевая часть кода, которая использует функции multidict, заключается в следующем:

def getFrequencyDictForText(sentence):
    fullTermsDict = multidict.MultiDict()
    tmpDict = {}

    # making dict for counting frequencies
    for text in sentence.split(" "):
        if re.match("a|the|an|the|to|in|for|of|or|by|with|is|on|that|be", text):
            continue
        val = tmpDict.get(text, 0)
        tmpDict[text.lower()] = val + 1
    for key in tmpDict:
        fullTermsDict.add(key, tmpDict[key])
    return fullTermsDict

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Вам не нужен полноценный мультидикт;вам просто нужно Counter.

from collections import Counter

def get_frequency_dict_for_text(sentence):
    skip_words = {"a", "the", "an", ...}

    words = (x.lower() for x in sentence.split(" ") if x not in skip_words)
    return Counter(words)
1 голос
/ 29 октября 2019

Я думаю, defaultdict со значениями по умолчанию для списка можно использовать для получения близкого приближения:

# Each new value is created by calling the "list" function
# Saves you from needing to do a "if key not in fullTermsDict" check prior to "append"ing
fullTermsDict = defaultdict(list)  

. . .

fullTermsDict[key].append(tmpDict[key])

Обязательное примечание: Python предпочитает snake_case, а не camelCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...