Как проверить, существует ли значение в текстовом значении в 2D массиве? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть 2D-массив, который выглядит следующим образом:

[['A.J. Greer', 'COL', 'LW', '15', '1', '1', '2', '14', '9', '20', '5'],
 ['Aaron Ekblad', 'FLA', 'D', '82', '13', '24', '37', '47', '180', '114', '88'],
 ['Adam Clendening', 'CLS', 'D', '4', '0', '0', '0', '0', '3', '1', '3'],
 ['Adam Cracknell', 'FA', 'C', '2', '0', '0', '0', '0', '3', '6', '0'],
 ['Adam Erne', 'DET', 'LW', '65', '7', '13', '20', '40', '70', '159', '26'],
 ['Adam Gaudette', 'VAN', 'C', '56', '5', '7', '12', '18', '55', '48', '15'],
 ['Adam Henrique', 'ANH', 'C', '82', '18', '24', '42', '24', '122', '78', '71'],
 ['Adam Johnson', 'PIT', 'C', '6', '0', '2', '2', '0', '3', '11', '3'],
 ['Adam Larsson', 'EDM', 'D', '82', '3', '17', '20', '44', '117', '256', '128'],
 ['Adam Lowry', 'WPG', 'LW', '78', '12', '11', '23', '33', '105', '223', '49'],
 ['Adam McQuaid', 'FA', 'D', '50', '3', '4', '7', '42', '28', '122', '88'],
 ['Adam Pelech', 'NYI', 'D', '78', '5', '16', '21', '24', '110', '149', '116'],
 ['Adrian Kempe', 'LA', 'C', '81', '12', '16', '28', '50', '118', '86', '21'],
 ['Alan Quine', 'CGY', 'C', '13', '3', '2', '5', '6', '11', '14', '2'],
 ['Alec Martinez', 'LA', 'D', '60', '4', '14', '18', '8', '78', '78', '135'],
 ['Aleksander Barkov', 'FLA', 'C', '82', '35', '61', '96', '8', '206', '28', '61'],
 ['Alex Biega', 'VAN', 'D', '41', '2', '14', '16', '22', '91', '101', '43'],
 ['Alex Chiasson', 'EDM', 'RW', '73', '22', '16', '38', '32', '123', '85', '31']]

Это список игроков и статистика, у меня также есть текстовый файл, который выглядит так:

Name                    Team  Pos   Games G     A     Pts   PIM   SOG   Hits  BS
================================================================================
A.J. Greer              COL   LW    15    1     1     2     14    9     20    5   
Aaron Ekblad            FLA   D     82    13    24    37    47    180   114   88  
Adam Clendening         CLS   D     4     0     0     0     0     3     1     3   
Adam Cracknell          FA    C     2     0     0     0     0     3     6     0   
Adam Erne               DET   LW    65    7     13    20    40    70    159   26  
Adam Gaudette           VAN   C     56    5     7     12    18    55    48    15  
Adam Henrique           ANH   C     82    18    24    42    24    122   78    71  
Adam Johnson            PIT   C     6     0     2     2     0     3     11    3  

Я хочу проверить, находится ли игрок в моем текстовом файле в моем 2D-списке и хочет ли он добавить все итоговые суммы очков. Это то, что я сделал до сих пор:

sum = 0
f = open(filename, "r")
lines = f.readlines()
for names in lines:
    if names == stat_list[0]:
        sum += stat_list[6]
return sum

Однако я продолжаю получать ноль, какие-либо мысли?

Я пытался сделать это, чтобы проверить каждую строку в моем текстовом файле и проверить только имена в начале, но это все равно дает мне 0.

    sum = 0
    f = open(filename, "r")
    lines = f.readlines()
    while True:
        for names in lines:
            if names[20] == stat_list[0]:
                sum += stat_list[6]
        return sum 

1 Ответ

0 голосов
/ 19 марта 2020

Подсказка: попробуйте отладку или добавьте несколько операторов println - ваш код, вероятно, делает именно то, о чем вы говорите.

Я думаю, проблема будет в этой строке: if names == stat_list [ 0]:

Вы не указали нам, что такое stat_list, но, возможно, он сравнивает имя ('AJ Greer) со всей первой строкой массива 2d (stat_list). Это всегда будет ложно, и, следовательно, сумма никогда не изменится.

Возможно, вы захотите добавить счетчик следующим образом:

sum = 0
f = open(filename, "r")
lines = f.readlines()
index = 0
for names in lines:
    if names == stat_list[index][0]:
        sum += stat_list[6]
    index += 1
return sum
...