2017-02-20 20 views
1

私はMapReduceの2つのcsvファイル(all-bills.csvopen-bills.csv)を読み込むプログラムのための減速機を書いています。私がしたいのは、すべての請求書からオープン・ビルの値を削除して、すべての支払い済み請求書を取得できるようにすることです。辞書から両方の重複を削除するにはどうすればいいですか?

私が行ったことは、すべてのエントリを私のレデューサーの辞書に追加することです。それより2倍以上のエントリを削除して、私の辞書の有料の請求書だけを残します。

+0

あなたが例を提供することができますか?どのようにデータを整理していますか? .csvファイルは1人のためだけですか? – kbunarjo

+0

レストラン内に複数の人がいます。たとえば、彼はすべてのbills.csvとopen-bills.csvの両方に表示されるように、彼の請求書を支払っていないtheres 'A'。 Aがキーになるような辞書を作成すると、両方のファイルから辞書に2つのエントリが必要になります。このようなことが起こった場合は、両方を削除して、請求書を払った人だけが残っているようにします。 – Shehryar

+0

あなたのcsvファイルのデータは(固有の)請求IDの周りに編成されていますか?または顧客ID周辺?あなたの命名は、csvファイルのレコードがbillID、custID、bill-detail-1、bill-detail-2などのように見えることを意味します。ちょうど1つのcsvファイルを持ち、紙幣のステータスが「有料」、「開封済み」、「その他」であることを示す追加の列「請求ステータス」を持つ方が簡単かもしれません。 – Denis

答えて

0

はこれを試してみてください:

{k: v for k, v in all_bills.items() if k not in open_bills} 
関連する問題