2

我现在有一个这样的元组列表:

[('Ben', '5 0 0 0 0 0 0 1 0 1 -3 5 0 0 0 5 5 0 0 0 0 5 0 0 0 0 0 0 0 0 1 3 0 1 0 -5 0 0 5 5 0 5 5 5 0 5 5 0 0 0 5 5 5 5 -5'),
 ('Moose', '5 5 0 0 0 0 3 0 0 1 0 5 3 0 5 0 3 3 5 0 0 0 0 0 5 0 0 0 0 0 3 5 0 0 0 0 0 5 -3 0 0 0 5 0 0 0 0 0 0 5 5 0 3 0 0'),
  ...]

它会持续一段时间。

我对python(和一般编程)相对较新,所以我正在努力弄清楚如何创建一个新的元组,其中每个元组的 item[1] 元素被修改,但每个左侧的 item[0] 元素原封不动。我要做的就是将每个元组的第二个元素放入所有这些数字的列表中。我试图只是 .split() 它,但元组是不可变的。那你会怎么处理这个问题呢?

最终它是一个开始练习的例子。我们正在根据每部电影的评分制作一个非常原始的电影推荐器,每个数字都是人们给出的与电影相对应的评分。

4

1 回答 1

5

由于元组是不可变的,因此您必须基于旧元组创建新元组:

data = [('Ben', '5 0 0 0 0 0 0 1 0 1 -3 5 0 0 0 5 5 0 0 0 0 5 0 0 0 0 0 0 0 0 1 3 0 1 0 -5 0 0 5 5 0 5 5 5 0 5 5 0 0 0 5 5 5 5 -5'),
        ('Moose', '5 5 0 0 0 0 3 0 0 1 0 5 3 0 5 0 3 3 5 0 0 0 0 0 5 0 0 0 0 0 3 5 0 0 0 0 0 5 -3 0 0 0 5 0 0 0 0 0 0 5 5 0 3 0 0')]

data = [(name, ratings.split()) for name, ratings in data]

 

如果您不熟悉列表推导,这相当于

new_data = []
for name, ratings in data:
    new_data.append( (name, ratings.split()) )
data = new_data
于 2013-04-15T18:31:04.560 回答