寻找与此JavaScript代码等效的python

我正在为自己的工作学习python,以便能够处理统计数据。我已经具有C#和javascript的知识,可以使用这些语言解决此问题,但是我很难将解决方案转换为python。

问题 计算.txt文件中所有唯一的四个字母词。任何带有撇号的单词都应被忽略。忽略单词的大小写(即工具和工具仅应计为一个单词)。打印(以便用户可以看到)唯一的四个字母词的数量。

根据单词的最后两个字母(单词结尾)将四个字母单词分开。计算这些结尾中每个词有多少个单词。

打印出单词结尾的列表以及为每个结尾找到的单词数。

我已经在下面的Javascript中解决了这个问题:

var listOfWords = ['card','alma','soon','bard','moon','dare'];
var groupings = {};

for(var i = 0; i < listOfWords.length; i++);
{
    var ending = listOfWords[i].substring(2,4)
    if(groupings[ending] === undefined)
    {
        groupings[ending] = {}
        groupings[ending].words = []
        groupings[ending].count = 0
    }
    groupings[ending].words.push(listOfWords[i])
    groupings[ending].count++
};

console.debug(groupings);

这是我到目前为止在python中拥有的东西:

import re
text = open("words.txt")
regex = re.compile(r'\b\w{4}\b')
allFours = []
groupings = []

for line in text:
    four_letter_words = regex.findall(line)
    for word in four_letter_words:        
        allFours.append(word)

mylist = list(dict.fromkeys(allFours))
uniqueWordCount = len(mylist)
print(uniqueWordCount)
for i = 0; i < mylist.length; i++:
    var ending = mylist[i]

我希望我已经清楚地解释了所有问题。非常感谢所有帮助,谢谢。

h11111_h 回答:寻找与此JavaScript代码等效的python

  

问题计数.txt文件中所有唯一的四个字母词。任何带有撇号的单词都应被忽略。忽略单词的大小写(即工具和工具仅应计为一个单词)。打印(以便用户可以看到)唯一的四个字母词的数量。

     

根据单词的最后两个字母(单词结尾)将四个字母单词分开。计算这些结尾中每个词有多少个单词。

  • 唯一->设置
  • 4个字母->比使用正则表达式更好地检查长度,正则表达式很慢
  • 忽略带撇号的单词-> "'" not in word
  • 忽略大小写->将所有内容转换为较低,容易的
  • 根据最后2个字母划分集合->写出字典
result = set()
with open("words.txt") as fd:
    for line in fd:
        matching_words = {word for word in line.lower().split() if len(word)==4 and "'" not in word}
        result.update(matching_words)
print(result)
print(len(result))

line.lower()将整行改成小写字母,然后使用默认参数的.split()将其分隔在空白处。

result_dict = {}
for word in result:
    # better to use default dict here but you'll need to read docs for that
    result_dict[word[2:]] = result_dict.get(word[2:],[]) + [word]
print(result_dict)
print({key: len(value) for key,value in result_dict.items()})
本文链接:https://www.f2er.com/3059112.html

大家都在问