在python中,我使用的是mincemeat map-reduce框架
从我的map函数中我想在循环中产生(k,v),它会将输出发送到reduce函数(给出的样本数据是map函数的输出)
auth3 {'practical': 1, 'volume': 1, 'physics': 1}
auth34 {'practical': 1, 'volume': 1, 'chemistry': 1}
....
会有很多这样的条目;这只是一些例子.
这里,auth3和auth34是键,各自的值是字典项
当我尝试打印键,值时,在reduce函数内部,我得到“太多值来解压缩”错误.我的reduce函数看起来像这样
def reducefn(k, v):
for k,val in (k,v):
print k, v
请让我知道如何解决此错误.
解决方法:
首先,使用python内置字典定义您的字典
>>> dic1 = dict(auth3 = {'practical': 1, 'volume': 1, 'physics': 1},
auth34 = {'practical': 1, 'volume': 1, 'chemistry': 1} )
>>> dic1
{'auth3': {'practical': 1, 'volume': 1, 'physics': 1},
'auth34': {'practical': 1, 'volume': 1, 'chemistry': 1}}
然后,您的reduce函数可能会变为
def reducefn(dictofdicts):
for key, value in dictofdicts.iteritems() :
print key, value
到底,
>>> reducefn(dic1)
auth3 {'practical': 1, 'volume': 1, 'physics': 1}
auth34 {'practical': 1, 'volume': 1, 'chemistry': 1}
标签:python,dictionary,mincemeat
来源: https://codeday.me/bug/20190709/1410035.html