我得到以下错误需要超过1个值来解压缩

时间:2015-09-26 14:51:32

标签: python

我在python中有以下结构。

data_set = {'1':[('Worktype', 'Consultancy'), ('Age', 30), ('Qualification', 'Ph.D'), ('Age', 9)], \
            '2':[('Worktype', 'Service'), ('Age', 21), ('Qualification', 'M.Tech'), ('Age', 1)], \
            '3':[('Worktype', 'Research'), ('Age', 26), ('Qualification', 'M.Tech'), ('Age', 2)], \
           }

我使用以下循环来访问元素。我的目标是打印与'工作类型相关联的值。

for d,c in data_set:
    print(c['Worktype']) 

但是,我收到以下错误 -

for d,c in data_set:
ValueError: need more than 1 value to unpack

正确的方法是什么?

2 个答案:

答案 0 :(得分:2)

您有两个错误。首先,您在键/值对上进行了错误的迭代(使用items())。其次,值不是字典,它们是键/值对的列表 - 可以使用dict()轻松转换为字典。试试这个:

for d, c in data_set.items():
    print(dict(c)['Worktype'])

我的方法的优点是不修改原始数据集。现在上面将打印:

Consultancy
Research
Service

答案 1 :(得分:2)

当您直接迭代字典时,它只会遍历其MQL4.56789+。要迭代这些值,您应该迭代key,即使那时内部元素也是列表,而不是.items(),因此您无法直接访问 - dict

似乎内部元素应该是一个字典,如果是这样,你应该首先使用c['Worktype']内置函数将它们转换为字典。示例 -

dict()

演示 -

data_set = {k:dict(v) for k,v in data_set.items()}
for d,c in data_set.items():
    print(c['Worktype'])