2017-03-19 8 views
0

このチュートリアルでは、2つのマッパーを1つに結合しようとしています - https://www.knowbigdata.com/blog/multiplying-matrix-using-mapreduce。有するテキストファイル入力を与えられた: MapReduce Python - アンパックする値が多すぎる

2 3 9 R

1 5 8 L

1 2 5 L

1 1 6 L ..

それが左または右の行列からのものである場合、LとRが示します。 Value error: too many values to unpack (expected 3)

私はPythonとのMapReduceに新しいです:私はこのエラーを取得する

n = 3; 
l = 3; 

for line in sys.stdin: 
    if 'L' in line: 
     (i, k, v) = re.split("[ \t]+", line.strip()); 
    for j in range(1, l + 1): 
      print("%s %s %d\t%s L" % (i, k, j, v)); 
else: 
    (k, j, v) = re.split("[ \t]+", line.strip()); 
for i in range(1, n + 1): 
      print("%d %s %s\t%s R" % (i, k, j, v)); 

:ここに私のコードです。これを修正するにはどうすればよいですか?

ありがとうございます。

答えて

1

問題は、re.split関数が入力用に4つの値のリストを返すことです。これら4つの値をアンパックし、3つの変数に割り当てようとしています。

i, j, k, _ = re.split("[ \t]+", line.strip()) 

>>> line = "1 1 6 L\n" 
>>> re.split("[ \t]+", line.strip()) 
['1', '1', '6', 'L'] 

あなたは最後の値を破棄したい場合は、Pythonでpalceholder変数として、アンダースコアを使用するのが一般的です

関連する問題