python找到一行单词中最长的_如何在文本文件中找到最长的单词?
当前代码返回文本文件中最长的一行,即句号。
如果您想要最长的一行是某个输入字符串的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找到一行单词中最长的_如何在文本文件中找到最长的单词?相关推荐
- css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格
html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...
- amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】
HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...
- .Net 6.0中的新增特性_.Net 6.0中的新增功能
.Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...
- python替换文本文件单词_在大型文本文件中替换一组单词
我有一个大的txt文件(大约20GB),我想替换此大文件中单词列表的所有实例.我正在努力寻找一种优化此代码的方法.这导致我长时间处理此文件. 我可以改善什么? corpus_input = open( ...
- java图遍历求最长路径_如何在Java中使用递归实现矩阵中最长路径的返回
我正试图用递归来解决这个问题. 问题是:对于二维正整数数组,我如何返回最长路径(步骤),以便最长路径的每个单元格中的值是从整数的降序序列开始的,并且每个单元格和单元格之间的差异是一个给定的数字(num ...
- python获取列表中某个元素个数_如何获取列表中的元素数?
How to get the size of a list? 要查找列表的大小,请使用内置函数len:items = [] items.append("apple") items. ...
- 在access中一列称为_在数据表中,每一行称为一条____,每一列称为一个____。
[填空题]Access提供了两种字段数据类型,用于保存文本或文本和数字的组合数据,这两种数据类型是____和____. [单选题]Access中,一个数据表最多可以建立()个主键. [单选题]The ...
- 怎样在表格中选出同一类_两个表格中重复的
[www.520z-2.com - 话题作文] 篇一:<两个电子表格里如何找相同的名字 补充> 两个电子表格里如何找相同的名字 补充:有表格1和表格2,表格1的C列是名字,表格2的B列是名 ...
- 中虚数怎么表示_英文论文写作中的常见错误
之前写过一篇如何写中文论文,这次就写个英文论文写作中的常见错误吧.都是平时自己整理总结的,也是一路摸爬滚打的见证吧.如有错误,欢迎批评指正.未完待续...... 1.逗号粘连: 两个独立的句子间要用句 ...
最新文章
- 从无到有算法养成篇-链式存储结构之循环链表
- esxi服务器能虚拟多少虚拟机,关于ESXI能虚拟出多少个虚拟机和CPU的关系
- 失败如何助你升入最高管理层
- Ubuntu 10.10升级显卡驱动后开机动画低分辨率问题
- 从github clone文件: Failed to receive SOCKS4 connect request ack.
- C#程序集Assembly学习随笔(第一版)_AX
- Deep Learning基础--Softmax求导过程
- CSS word-wrap强制换行截断长字符串
- arcgis合并tif影像_ARCGIS多种影像裁剪
- 【RobotStudio学习笔记】(七)工件坐标
- numpy教程:逻辑函数Logic functions
- 阿里云运行python_阿里云运行python代码
- ACL2019之对话系统
- PAT 甲级 1018 Public Bike Management
- Python基础03-基本数据类型
- 【QCM2150】WCN3680 WFA认证11ac AP 4.2.23测试FAIL
- python处理期货数据_用python中的Pandas库实现一个商品期货网格策略
- 如何看待测试过程中的漏测发生
- 海思Hi3536移植QT5.9.8教程
- [精选] 统计在线人数,用php 如何来实现 ?