我在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
正确的方法是什么?
答案 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'])