使用Zip函数将两个列表同步到一起时出错Python 3.6.2

时间:2019-03-11 10:32:43

标签: python-3.x

在尝试使用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)

Sync list thread

1 个答案:

答案 0 :(得分:0)

num是str,而list1是int的列表。

代替

list1.append(num)

您应该使用

list1.append(int(num))