在元组索引的字典上反复进行“无法解包的值太多”

时间:2018-11-18 23:42:37

标签: python dictionary dictionary-comprehension

我正在尝试定义一个函数,该函数从与指定索引相关的字典StudentPerf(非常大,但我给出了前三项)的键中返回数据元素的列表,其中每个可能的值是仅列出一次。例如,如果字典中的键为[['John',2),('Julie',2),('John',3),('John',1),('Julie',1) ,('Julie',3)],则此函数应为索引0返回['John','Julie'],并为索引1返回[1,2,3]。

到目前为止,我一直收到错误“ 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 :(得分:0)

解包元组(这里是键。)您有3个值。但是,您只需要分解成两个变量即可。也是这样:

for (name, gender, year)

答案 1 :(得分:0)

我不明白你的目的。

但是函数选择的错误是:

  1. studentPerf.keys()返回一个具有三元组的可迭代对象
  2. 您的代码for key, index in仅打开两个项目的包装

您应该:

  1. for index0, index1, index2 in studentPerf.keys():
  2. for key, *index in studentPerf.keys()。这样索引将是2元组