使用ZIP函数将两个列表同步时,错误



我在尝试使用zip函数一起将两个列表同步时遇到问题。我正在使用TXT文件创建一个高分系统。它读取文件并将文件分为两个列表,即名称和分数:

5   
andy  
34  
jamie  
8   
fred  
45  
kyle  
6  
joe  

然后对一个列表进行排序,另一个列表同步。这很好。然后,它要求输入一个新的分数,如果它比列表中的最小值大,则删除了最小的分数,并将新值添加到列表中。然后,我尝试再次对其进行排序,但它失败并给我此错误消息:

list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))
TypeError: '<' not supported between instances of 'str' and 'int'

我尝试将列表变量切换到字符串,但它只是输出了一大堆垃圾:

[' ', ' ', ' ', ' ', "'", "'", ',', ',', ',', ',', '3', '4', '4', '5', '6', '7', '8', '[', ']']
[',', ',', 'o', 'r', ' ', 'j', "'", "'", 'f', 'j', ' ', "'", 'e', 'd', "'", "'", 'e', '[', 'a']

下面,我将代码和一个链接放在了我从中获得"同步列表"代码的位置。

谢谢

lines = [line.rstrip('n') for line in open('highScores_Test.txt')]
print(lines)
#list1 = scores list2 = names
list2 = [(lines[1]),(lines[3]),(lines[5]),(lines[7]),(lines[9])]
list1 = [int(lines[0]),int(lines[2]),int(lines[4]),int(lines[6]),int(lines[8])]
print(list1[0])

list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))

print(list1)
print(list2)
num = input()
name = input()
if int(num) > int(list1[0]):
    del list1[0]
    del list2[0]
    list1.append(num)
    list2.append(name)
list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))
print(list1)
print(list2)

同步列表线程

num是str,list1是int。

的列表

而不是

list1.append(num)

您应该使用

list1.append(int(num))

最新更新