将值从一个列表追加到另一个列表

时间:2017-05-12 18:41:12

标签: python list

我正在导入两个csv文件。我缺少一个csv的值,我需要与另一个csv结合。

第一个列表如下stats =

[ ['0', 'Dallas', 'Keuchel,', 'HOU', '8', '8', '6', '0', '1.000', '1', '0', '7', '0', '58.2', '37', '12', '11', '6', '14', '50', '1.69'],

    ['1', 'Ervin', 'Santana,', 'MIN', '7', '7', '5', '1', '.833', '1', '1', '6', '0', '47.0', '21', '9', '9', '6', '16', '37', '1.72'],

    ['2', 'Jason', 'Vargas,', 'KC', '7', '7', '5', '1', '.833', '0', '0', '6', '0', '44.2', '33', '6', '5', '1', '8', '39', '1.01']]

第二个看起来像salaries =

[['19249-12477', 'P', 'Chris', 'Chris Sale', 'Sale', '54.71', '7', '11800', 'TAM@BOS', 'BOS', 'TAM', '', '', '', ''],

['19249-5481', 'P', 'Max', 'Max Scherzer', 'Scherzer', '48.29', '7', '11700', 'PHI@WAS', 'WAS', 'PHI', '', '', '', ''],

['19249-6311', 'P', 'Madison', 'Madison Bumgarner', 'Bumgarner', '38.50', '4', '11000', 'CIN@SFG', 'SFG', 'CIN', '', 'Shoulder', '', '']]

两个列表都有不同的长度。 我需要从列表2中提取salaries[i][1]salaries[i][7]并将其与列表一相结合。

这是捕获,我必须遍历两个列表并确保名称匹配,否则我将得到错误的值与错误的玩家相结合。

到目前为止,这是我的代码

for name1, name2 in zip(salaries, stats):
    if name1[2] == name2[1] and name1[4] == name2[2]:
        stats.append(salaries[1][1])



for name1, name2 in zip(salaries, stats):
    if name1[2] == name2[1] and name1[4] == name2[2]:
        stats.append(salaries[1][7])

但是当我运行它时,它只会附加一次给我标题值['Position'],而不是遍历整个列表并附加值。

当我开始运行时,我还需要将值附加到stats。我是否需要为其添加特定的索引?

1 个答案:

答案 0 :(得分:2)

您不能简单地zip列表:条目与位置不对应。相反,请同时阅读两个列表,sort按名称,(请参阅sorting tutorial)然后...

你知道这两个文件包含完全相同的玩家吗?如果是这样,此时您可以zip列表。如果没有,请完全忘记zip。相反,遍历stats。对于每位玩家,请在salaries中找到该名称。抓住这两个字段并将它们插入stats的那一行。如果您担心订单,那么是的,您必须指定放置它们的位置 - 使用insert,而不是append

这是简单的方法。如果您担心执行时间(例如,对于职业体育史上的所有球员),那么有更快的方式来进行更新。对于只有1500名玩家,不要担心:在两个列表中读取,进行N平方更新,并写出新文件。

相关问题