gpt4 book ai didi

javascript - 寻找与此 javascript 代码等效的 python

转载 作者:行者123 更新时间:2023-12-01 00:26:11 24 4
gpt4 key购买 nike

我正在学习Python,以便我的工作能够操作统计数据。我已经掌握了 C# 和 javascript 的知识,并且可以使用这些语言解决这个问题,但是我在将解决方案转换为 python 时遇到了困难。

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

根据单词的最后两个字母(单词结尾)划分四个字母的单词。计算一下每个结尾有多少个单词。

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

我已经在下面的 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]

我希望我已经清楚地解释了一切,任何问题都可以提问。非常感谢所有帮助,谢谢。

最佳答案

THE ISSUE Count all unique four letter words in a .txt file. Any word with an apostrophe in should be ignored. Ignore the case of the word (i.e. Tool and tool should only be counted as one word). Print out (so that the user can see) the number of unique four letter words.

Divide up the four letter words based upon the last two letters of the word (the word ending). Count up how many words you have for each of these endings.

  • 唯一 -> 设置
  • 4 个字母 -> 最好只检查长度而不是使用正则表达式,正则表达式很慢
  • 忽略带撇号的单词 -> “'”不在单词中
  • 忽略大小写 -> 全部转换为更简单的格式
  • 根据最后 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()})

关于javascript - 寻找与此 javascript 代码等效的 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58972457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com