对于您的要求(元组列表转换成字典),你可以这样做以下(不包括输入的库如集合,itertools等)
materialCheck=[('1111','U'),('1111','D'),('1111','U+'),('222','U')]
output_dict = {}
for item in materialCheck:
if item[0] not in output_dict:
output_dict[item[0]] = []
output_dict[item[0]].append(item[1])
这样做。
如果您希望以您的方式完成此操作,则错误与行dct = dict((key, tuple(v for (k, v) in pairs))
一致。这应该为你工作:
materialCheck = []
materialCheck.append(str(data['material']))
materialCheck.append(str(data['kind']))
dct = {}
for (key, pairs) in itertools.groupby(materialCheck, lambda pair: pair[0]):
dct[key] = tuple(v for (k, v) in pairs)
print dct
的ValueError异常是可能的,如果data['material']
或data['kind']
不是一个两个值列表。所需的输入将如下所示:
data = {'material' : [('1111', 'U'), ('222', 'U')], 'kind' : [('1111', 'D'), ('1111', 'U+')]}
'data'是怎么样的? – Marcin 2014-12-04 07:10:29
死亡双人模样是怎样的? – 2014-12-04 07:12:44
materialCheck = [('1111','U'),('1111','D'),('1111','U +'),('222','U')]我试图将列表更改为{1111:('U','D','UP +'),222:('u')} ...它引发错误ValueError:解包的值太多 – Shesha 2014-12-04 07:15:15