为了账号安全,请及时绑定邮箱和手机立即绑定

寻找与此 javascript 代码等效的 python

寻找与此 javascript 代码等效的 python

开心每一天1111 2022-01-07 09:56:15
我正在为我的工作学习 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 retext = 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]我希望我已经清楚地解释了所有问题。非常感谢所有帮助,谢谢。
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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

根据单词的最后两个字母(单词结尾)划分四个字母的单词。数一数这些词尾你有多少个单词。

  • 独特 -> 设置

  • 4 个字母 -> 最好只检查长度而不是使用正则表达式,正则表达式很慢

  • 忽略带撇号的单词 -> "'" not in word

  • 忽略大小写 -> 将所有转换为更低,简单

  • 根据最后 2 个字母划分集合 -> 制作一个 dict

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()})


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信