«слишком много значений для распаковки» итерация по словарю, индексируемому кортежами - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь определить функцию, которая возвращает список элементов данных из ключей словаря studentPerf (очень большой, но я дал первые три элемента), относящихся к указанному индексу, где каждое возможное значение равноуказан только один раз.Например, если ключи в словаре были [('Джон', 2), ('Джули', 2), ('Джон', 3), ('Джон', 1), ('Джули', 1), ('Julie', 3)], тогда эта функция должна возвращать ['John', 'Julie'] для индекса 0 и [1,2,3] для индекса 1.

Пока что я 'получено сообщение об ошибке «ValueError: слишком много значений для распаковки (ожидается 2)»

studentPerf = {('Jeffery','male','junior'):[0.81,0.75,0.74,0.8],
('Able','male','senior'):[0.87,0.79,0.81,0.81],
('Don','male','junior'):[0.82,0.77,0.8,0.8]}


def select(key, index): 
    for key, index in studentPerf.keys():
        print(index)

select(0,1)

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Я не понимаю вашу цель.

Но ошибка выбора функции:

  1. studentPerf.keys () возвращает итерацию с 3 кортежами
  2. ваш код for key, index in просто распакуйте два предмета

Вы должны:

  1. for index0, index1, index2 in studentPerf.keys(): или
  2. for key, *index in studentPerf.keys(). Таким образом, индекс будет 2-кортеж
0 голосов
/ 19 ноября 2018

Для распаковки кортежа (введите здесь ..) у вас есть 3 значения.Но вы распаковываете только в две вары.Так же:

for (name, gender, year)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...