代码重复打印了太多次

时间:2017-02-13 13:40:02

标签: python

myfile = open('Results.txt')
    title = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format('Player Nickname','Matches Played','Matches Won','Matches Lost','Points')
    print(title)
    unsorted_data = list()
    for line in myfile:
        item = line.split(',')
        points = int(item[2]) * 3
        item.append (points)
        if item[2] != 0:
            unsorted_data.append(item)
            sorted_data = sorted(unsorted_data,key=lambda x : x[5], reverse= True)
            for item in sorted_data:
                result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(*item)
                print(result)

大家好,我对python很陌生。最近在询问了关于如何对列表进行排序的另一个问题后,我现在又遇到了另一个问题。当程序打印我的结果时,会打印出一堆重复的名字。我如何解决它?有没有办法将.rstrip()放入item [3],因为那里有换行符代码,我想摆脱它。一起排序列表。

以下是文件中的一些示例:

Esports,19,8,11
RNGesus,19,7,12
Kes,19,9,10
Magnitude,19,6,13

2 个答案:

答案 0 :(得分:0)

您没有为每一行清除unsorted_data,因此每次都使用相同的列表。将其移动到for循环中,以便每次迭代创建一个新列表

for line in myfile:
    unsorted_data = [] # can use [] instead of list()

或者只使用item中的列表(split)代替。

sorted_data = sorted(item,key=lambda x : x[4], reverse= True)

除非你想要一个包含所有数据的列表,否则将你的for循环移到外部for循环之外,这样它就会在最后输出所有数据

至于\n之前的strip {/ 1}}。

split

答案 1 :(得分:0)

Python使用缩进来分隔块。在您的代码中,打印循环嵌入在读取循环中。

尝试以下方法:

myfile = open('Results.txt')
title = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format('Player Nickname','Matches Played','Matches Won','Matches Lost','Points')
print(title)
unsorted_data = list()
for line in myfile:
    item = line.strip().split(',')
    points = int(item[2]) * 3
    item.append (points)
    if item[2] != 0:
        unsorted_data.append(item)

sorted_data = sorted(unsorted_data,key=lambda x : x[4], reverse= True)
for item in sorted_data:
    result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(*item)
    print(result)