Python中文
首页
教程
问答
标签
搜索
登录
注册
比较不同大小和数据的列表以输出不同的
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在为一个个人项目编写一个程序,以便更好地理解python中的list和dictionary是如何工作的。我是一个业余程序员还在学习。程序的目标是能够读取两个文件,并将这两个文件的参数相互比较,如果其中一个文件的参数不正确或不匹配,它将创建一个具有不正确/不匹配参数的新文件。在</p> <p>我已经创建了这个程序,程序会按照它的预期来做。但是,当我试图比较参数多于或少于所比较文件的文件时,我遇到了一个错误。简言之,我的列表中的元素数量相同;但是如果列表中的元素不相等,我就会遇到错误,通常是列表索引超出范围。在</p> <p>据我所知,其要点如下: 我有两个文本文档:<br/> 文本a.txt公司名称:</p> <pre><code>Data1="123.212.2.312" Dog=12 Cat="127.0.0.1" Data2=9498 Fish="" Tiger=9495 Data3=5 Data4=2 Game=55 Tree=280 Falcon=67 Bear=2 </code></pre> <p>在文本B.txt公司名称:</p> ^{pr2}$ <p>我们可以看到两个文本文档中都缺少参数,而且两个文档中的某些参数都不正确,因此我想输出<strong>中的差异文本a.txt只将</strong>放入另一个文本文档中。在</p> <p>因此,程序将执行以下操作过程:<em>(这是当前程序的工作方式,当比较两个文本时,<strong>相同的</strong>参数数量请将此流程图稍加保留,它并不意味着完全代表程序,只需给出程序如何工作的总体概念)</em>: <a href="https://i.stack.imgur.com/ipzzm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ipzzm.png" alt="Flowchart"/></a></p> <p>所以最终我的输出应该是:</p> <p><a href="https://i.stack.imgur.com/0nG7m.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/0nG7m.png" alt="outputext"/></a></p> <p>请记住,我不关心参数是否存在于文本B.txt但不是在文本a.txt;我关心的是如果参数存在于文本a.txt而不是在文本B.txt我知道这让人困惑,但希望这张照片能把事情弄清楚。在</p> <p>至于我的代码,这是一段很长的代码,但重要的部分如下:请注意,我也使用PYQT4作为gui。在</p> <pre><code>with open(compareResults, 'wb') as fdout: for index, tabName in enumerate(setNames): tabWidget = QtGui.QWidget() tabLabel = QtGui.QTextEdit() print "Tab Name is :{}".format(tabName) fdout.write('{}'.format(tabName) + '\r\n') nameData = lst[index] print 'name data = {}'.format(nameData) for k in nameData: if nameData[k] != correct_parameters[k]: tabLabel.setTextColor(QtGui.QColor("Red")) tabLabel.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>('This Parameter is Incorrect: {} = {}'.format(k, nameData[k])) fdout.write('\t' + '|' + 'This Parameter is Incorrect: {} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n') print ('{} = {}'.format(k, nameData[k])) elif nameData[k] == correct_parameters[k]: tabLabel.setTextColor(QtGui.QColor("Black")) tabLabel.append('{} = {}'.format(k, nameData[k])) fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n') print ('{} = {}'.format(k, nameData[k])) tabLayout = QtGui.QVBoxLayout() tabLayout.addWidget(tabLabel) tabWidget.setLayout(tabLayout) self.tabWidget.addTab(tabWidget, tabName) </code></pre> <p>我相信我对代码的缺点是,我循环了一组元素,并且在遍历两个列表时期望相同数量的元素。当列表的元素数目不相同时,如何才能循环使用它们?在</p> <p>如果问题太复杂或您需要更多信息/代码,请让我知道,我会编辑问题。在</p> <p><strong>编辑:</strong>为了澄清,我最终使用了@CarsonCrane的答案,因为它帮助我创建了我需要的循环,这就是我现在的代码:</p> <pre><code>for k in nameData: if k in correct_parameters: if nameData[k] != correct_parameters[k]: tabLabel.setTextColor(QtGui.QColor("Red")) tabLabel.append('This Parameter is Incorrect: {} = {}'.format(k, nameData[k])) fdout.write('\t' + '|' + 'This Parameter is Incorrect: {} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n') print ('{} = {}'.format(k, nameData[k])) elif nameData[k] == correct_parameters[k]: tabLabel.setTextColor(QtGui.QColor("Black")) tabLabel.append('{} = {}'.format(k, nameData[k])) fdout.write('\t' + '|' + '{} = {}'.format(k, nameData[k]) + '\t' + '|' + '\r\n') print ('{} = {}'.format(k, nameData[k])) else: tabLabel.setTextColor(QtGui.QColor("Blue")) tabLabel.append('{} = {} does not appear in our default'.format(k, nameData[k])) fdout.write('\t' + '|' + '{} = {} does not appear in our default'.format(k, nameData[k]) + '\t' + '|' + '\r\n') print ('{} = {} does not appear in our default'.format(k, nameData[k])) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你会从中受益匪浅。首先,您可以使用以下方法从每个文件快速创建词典:</p> <pre><code>d1 = dict(l.strip().split('=') for l in open('file1.txt')) </code></pre> <p>这将给你一个更干净的方式来访问你的个人价值观。接下来,在比较这两本词典时,这样做是相当合理的:</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
为什么我的神经网络模型的准确性不能在这个训练集上得到提高?
9 回答
为什么我的神经网络模型的权重变化不大?
10 回答
为什么我的神经网络的成本不断增加?
1 回答
为什么我的神经网络的输入pickle文件是19GB?
9 回答
为什么我的神经网络给属性错误?“非类型”对象没有属性“形状”
2 回答
为什么我的神经网络训练这么慢?
4 回答
为什么我的神经网络输出错误?
3 回答
为什么我的神经网络预测适用于MNIST手绘图像时是正确的,而适用于我自己的手绘图像时是不正确的?
9 回答
为什么我的神经网络验证精度比我的训练精度高,而且它们都是常数?
5 回答
为什么我的私人用户间聊天会显示在其他用户的聊天档案中?
2 回答
为什么我的积分的绝对误差估计值大于积分(使用scipy.integrate.nqad)?
5 回答
为什么我的积层回归器得分比它的组件差?
1 回答
为什么我的移动方法不起作用?
6 回答
为什么我的稀疏张量不能转换成张量
8 回答
为什么我的稀疏张量不能转换成张量?
9 回答
为什么我的程序“停止”了?
1 回答
为什么我的程序一直试图占用所有可用的CPU
2 回答
为什么我的程序不使用指定的代理
5 回答
为什么我的程序不工作(python帮助中的反向函数)?
8 回答
为什么我的程序不工作时,我使用多处理模块
7 回答