我正在编程课程中,遇到一个问题
gamecentre1 = [winnerscore, winner]
organise = []
organise.extend([gamecentre1])
from operator import attrgetter, itemgetter
sorted(organise, key= itemgetter(0))
print(organise)
f = open("gameresults.txt","w")
f.write("Here are the winners of the games: \n")
f.write(str(organise))
f.write("\n")
f.close()
我试图将两个变量添加到列表中,然后将该列表添加到另一个列表中。然后,我要根据子列表的整数变量(整数为winnerscore
)来组织更大的列表。但是,问题在于我无法正确地组织它们,并且我担心由于必须将具有相同变量的相同列表追加到较大的列表中而不覆盖其中的现有列表,因此较大的列表只会一遍又一遍地具有相同的值。
这是因为我想在程序每次运行时都存储变量,而又不遗漏上一个游戏中变量的值。
我该怎么做?
答案 0 :(得分:0)
我试图将两个变量添加到列表中,然后将该列表添加到另一个列表中。然后,我想根据子列表的整数变量来组织更大的列表
听起来您想要的是一个嵌套列表-大列表的小列表,这样每个小列表都彼此独立。现在,您的代码中阻碍您完成此操作的关键问题是extend()
-本质上是列表 concatenation ,这不是您想要的。例如,
x = [1, 2]
x.extend([3, 4]) # x == [1, 2, 3, 4]
相反,请尝试使用append()
,它将其参数作为列表中的下一个值添加。例如:
x = []
x.append([3, 4]) # [[3, 4]]
x.append([1, 2]) # [[3, 4], [1, 2]]
现在在上面的示例中,我们有一个列表x
,该列表长两个元素,每个元素本身就是两个元素的列表。现在我们可以将其插入sort
:
y = sorted(x, key=lambda i: i[0])
print(y)
# [[1, 2], [3, 4]]
(lambda i: i[0]
实际上只是您使用itemgettr(0)
所做的一种更优雅的方式-它是一个 lambda ,这是一个小的内联函数,需要一个参数i
并返回0
的第i
个元素。在这种情况下,传入的i
是较小的列表之一)。
现在,您有了一个较小列表的排序列表,您可以对它们进行任何操作。