按键值在PyQt中对结果文本进行排序

时间:2015-11-16 14:05:28

标签: python loops sorting dictionary

我正在尝试使用某种键值从PyQt中的程序对输出结果进行排序,然后打印出与该顺序对应的文本。

换句话说,我有这段代码:

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 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]))
                            tabCounter+=1

                        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]))
                        tabCounter += 1
                tabLayout = QtGui.QVBoxLayout()
                tabLayout.addWidget(tabLabel)
                tabWidget.setLayout(tabLayout)
                self.tabWidget.addTab(tabWidget, tabName)
                if tabCounter == 0:
                    print 'no change in tabs'

在这种情况下,程序逐行打印结果,目标是按nameData[k] != correct_parameters[k]然后nameData[k] == correct_parameters[k]然后else

所以我的想法是为这些行中的每一行分配一个键值,所以如果信息不正确,我可以指定键值0,如果行正确,键值为1,如果行似乎没有键值为2.然后我可以从0到2按数字顺序排序这些值。并将它们打印到即时创建的标签页。

到目前为止,我了解如何将keyvalue分配给我在这里遇到的三种不同情况,问题是按顺序创建一个带有键值的tabLabel.append

我正在考虑使用这个伪代码的内容: 对于存储值中的键值: 对于所有等于0打印的键 然后所有键等于1打印 然后所有键等于2打印。

虽然我不确定是否,而不是使用循环,我可以将每个结果存储到一个新的字典中,然后将这些键分配给字典中的值,并使用类似sorted(data.values())的排序方法这个案例。然后排序打印出字典。

0 个答案:

没有答案