Как добавить переменные во вложенный список в python - PullRequest
1 голос
/ 17 апреля 2020
if __name__ == '__main__':
    for _ in range(int(input())):
        name = input()
        score = float(input())
        a=[]
        a.append([name][score])
    print(a)

Это ошибка при вводе значений

Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/Nested Lists.py", line 6, in <module>
    a.append([name][score])
TypeError: list indices must be integers or slices, not float

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Синтаксис для создания списка, содержащего name и score, равен [name, score]. [name][score] означает создание списка, содержащего только [name], а затем использование score в качестве индекса в этом списке; это не работает, потому что score - это float, а индексы списка должны быть int.

Вам также нужно инициализировать внешний список только один раз. Помещение a=[] внутри l oop заменяет элементы, добавленные вами на предыдущих итерациях.

a=[]
for _ in range(int(input())):
    name = input()
    score = float(input())
    a.append([name, score])
print(a)
0 голосов
/ 17 апреля 2020

Как уже говорили, словарь, вероятно, лучшее решение для этого случая.

Однако, если вы хотите добавить элемент с несколькими значениями в список, вы должны создать подсписок a.append([name, score]) или кортеж a.append((name, score)).

Имейте в виду, что кортежи нельзя изменять, поэтому, если вы хотите, например, обновить счет пользователя, вы должны удалить соответствующий кортеж из списка и добавить новый.

В случае, если вы просто хотите добавить новые значения в плоский список, просто go для a = a + [name, score]. Это добавит и name, и score в конец списка как полностью независимые элементы.

0 голосов
/ 17 апреля 2020

Используйте словарь вместо списка (список будет работать, но для того, что вы делаете, лучше всего подходит hashmap):

if __name__ == '__main__':
    scores = dict()
    for _ in range(int(input())):
        name = input()
        score = float(input())
        scores[name] = score
    print(scores)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...