当前代码返回文本文件中最长的一行,即句号。

如果您想要最长的一行是某个输入字符串的anagram,则需要获取一个输入字符串,并过滤掉不是anagram的行。

因为您指定了不存在重复字母,所以检查两个单词是否为anagrams的最简单方法是检查它们是否具有相同的字母集。所以:def Words(inputletters):

inputletters = set(inputletters)

qfile=open('dict.txt','r')

long=''

for line in qfile:

if set(line.strip()) == inputletters:

if len(line)>len(long):

long=line

return long

如果你不是在寻找一个精确的匹配,而只是一个子集,那么就用.issubset替换==。

或者如果“你不能重复字母”的意思是“你必须在两个字符串中完全重复相同的字母才能算作anagrams”,那也很简单:不要比较字母的集合,而要比较字母的排序列表:def Words(inputletters):

inputletters = sorted(inputletters)

qfile=open('dict.txt','r')

long=''

for line in qfile:

if sorted(line.strip()) == inputletters:

if len(line)>len(long):

long=line

return long

等等。一旦您能够准确地定义要搜索的内容,就可能是对数据结构和/或比较的微小更改。

我不认为这是一个完整的程序,不管你打算做什么,但它应该足够(a)让你指向正确的方向,或(b)让你更好地澄清问题。

同时,你还可以改进以下几点:

首先,应该始终关闭打开的文件(最好使用with语句)。

当我们使用它时,通常的Python编码标准(在PEP 8中编码)建议使用小写的函数名。而且long对于变量来说并不是一个好名字,虽然从Python 3.0开始它就不再是一种类型了,但它可能会让从2.x开始就一直在使用Python的读者感到困惑(在这一点上,Python仍然是大多数)。

更有趣的是,像Python中的许多简单的for循环一样,您的整个循环可以通过使用一系列迭代器转换调用来替换。其结果通常更简洁、更快、更难出错,而且通常可读性更强。

因此,让我们编写另一个版本来更改所有这些内容,并检查子集而不是完整集:def words(inputletters):

inputletters = set(inputletters)

with open('dict.txt') as qfile:

words = map(str.strip, qfile)

letters = map(set, words)

matching = filter(inputletters.issubset, letters)

longest = max(matching, key=len)

return longest

当然,您可以将其中的一些调用合并在一起(甚至可以将整个链变成一个一行程序,但我认为这可能会影响可读性的范围),或者将它们重写为生成器表达式(它们的组合比(set(line.strip()) for line in qfile)与map(set, map(str.strip, file))或map(lambda line: set(line.strip()), qfile)更好地进行比较)。

python找到一行单词中最长的_如何在文本文件中找到最长的单词?相关推荐

  1. css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格

    html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...

  2. amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】

    HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...

  3. .Net 6.0中的新增特性_.Net 6.0中的新增功能

    .Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...

  4. python替换文本文件单词_在大型文本文件中替换一组单词

    我有一个大的txt文件(大约20GB),我想替换此大文件中单词列表的所有实例.我正在努力寻找一种优化此代码的方法.这导致我长时间处理此文件. 我可以改善什么? corpus_input = open( ...

  5. java图遍历求最长路径_如何在Java中使用递归实现矩阵中最长路径的返回

    我正试图用递归来解决这个问题. 问题是:对于二维正整数数组,我如何返回最长路径(步骤),以便最长路径的每个单元格中的值是从整数的降序序列开始的,并且每个单元格和单元格之间的差异是一个给定的数字(num ...

  6. python获取列表中某个元素个数_如何获取列表中的元素数?

    How to get the size of a list? 要查找列表的大小,请使用内置函数len:items = [] items.append("apple") items. ...

  7. 在access中一列称为_在数据表中,每一行称为一条____,每一列称为一个____。

    [填空题]Access提供了两种字段数据类型,用于保存文本或文本和数字的组合数据,这两种数据类型是____和____. [单选题]Access中,一个数据表最多可以建立()个主键. [单选题]The ...

  8. 怎样在表格中选出同一类_两个表格中重复的

    [www.520z-2.com - 话题作文] 篇一:<两个电子表格里如何找相同的名字 补充> 两个电子表格里如何找相同的名字 补充:有表格1和表格2,表格1的C列是名字,表格2的B列是名 ...

  9. 中虚数怎么表示_英文论文写作中的常见错误

    之前写过一篇如何写中文论文,这次就写个英文论文写作中的常见错误吧.都是平时自己整理总结的,也是一路摸爬滚打的见证吧.如有错误,欢迎批评指正.未完待续...... 1.逗号粘连: 两个独立的句子间要用句 ...

最新文章

  1. 从无到有算法养成篇-链式存储结构之循环链表
  2. esxi服务器能虚拟多少虚拟机,关于ESXI能虚拟出多少个虚拟机和CPU的关系
  3. 失败如何助你升入最高管理层
  4. Ubuntu 10.10升级显卡驱动后开机动画低分辨率问题
  5. 从github clone文件: Failed to receive SOCKS4 connect request ack.
  6. C#程序集Assembly学习随笔(第一版)_AX
  7. Deep Learning基础--Softmax求导过程
  8. CSS word-wrap强制换行截断长字符串
  9. arcgis合并tif影像_ARCGIS多种影像裁剪
  10. 【RobotStudio学习笔记】(七)工件坐标
  11. numpy教程:逻辑函数Logic functions
  12. 阿里云运行python_阿里云运行python代码
  13. ACL2019之对话系统
  14. PAT 甲级 1018 Public Bike Management
  15. Python基础03-基本数据类型
  16. 【QCM2150】WCN3680 WFA认证11ac AP 4.2.23测试FAIL
  17. python处理期货数据_用python中的Pandas库实现一个商品期货网格策略
  18. 如何看待测试过程中的漏测发生
  19. 海思Hi3536移植QT5.9.8教程
  20. [精选] 统计在线人数,用php 如何来实现 ?

热门文章

  1. ABAP中SELECTION-SCREEN用法
  2. html的背景图片设置
  3. 问题 S: 除法问题(第四讲)
  4. 香港服务器托管服务怎么样?
  5. 《实施Cisco统一通信管理器(CIPT1)》——导读
  6. scipy5.01:积分应用:椭球体积的数值积分计算
  7. 一键实现前程无忧(51job)简历不停刷新(selenium)
  8. oracle数据库的scn,Oracle数据库SCN详解
  9. 上传excel文件到服务器,excel怎么上传到云服务器
  10. 使用WebClient实现文件下载