#python-3.x #list
Вопрос:
Мне нужно получить этот вывод в моем коде python:
но я получаю ошибку индекса вне диапазона, как это:
вот мой код:
marks = [['john',80, 90, 76, 82],['katy', 50, 55, 70, 65],['sydney',80,
72, 88, 90]]
marks_c = {}
for i in range(len(marks)):
name = marks[i][0]
l = []
for j in range(2,len(marks[i])):
print(marks[j][i])
print(marks_c)
print(marks_c)
Что я делаю не так?
Комментарии:
1. Я думаю , вы имеете в виду
marks[i][j]
, а неmarks[j][i]
2. когда я делаю пометки[j][i], я получаю список чисел и скобок. Это не работает.
3. Попробуйте это: {d[0]: d[1:] для d в знаках}
Ответ №1:
Обеспечивает ли этот код то, что вы ищете:
Код:
marks = [['john', 80, 90, 76, 82], ['katy', 50, 55, 70, 65], ['sydney', 80, 72, 88, 90]]
marks_c = {}
for entry in marks:
marks_c[entry.pop(0)] = entry
print(marks_c)
# Upon request of the questioner:
#
# for i in range(len(marks)):
# name = marks[i][0]
# l = []
# for j in range(1,len(marks[i])):
# l.append(marks[i][j])
# marks_c[name] = l
Выход:
{'john': [80, 90, 76, 82], 'katy': [50, 55, 70, 65], 'sydney': [80, 72, 88, 90]}
Комментарии:
1. ваш код работает, спасибо, но я на самом деле хотел знать, что мне нужно исправить в своем собственном коде, чтобы он работал правильно. не могли бы вы дать мне идею и помочь ее исправить?
2. Прежде всего обратите внимание на комментарий @Loocid к вашему исходному коду: он должен читаться
marks[i][j]
вместоmarks[j][i]
. И второе использованиеrange(1,len(marks[i]))
вместоrange(2,len(marks[i]))
. Если вы затем используетеl.append(marks[i][j])
во внутреннем цикле for (предполагая, что это то, для чего вы инициализированыl
) иmarks_c[name] = l
во внешнем цикле for, то вы должны получить тот же результатprint(marks_c)
.3. @SuperMaxLv4 Я исправил ваш код и добавил его в качестве комментария к своему исходному коду. Я надеюсь, что это поможет.