2017-02-20 19 views
1

Я пишу редуктор для программы MapReduce, которая должна читать два файла csv: all-bills.csv и open-bills.csv. То, что я хочу сделать, это удалить значения в открытых счетах со всех счетов, чтобы я мог получить все оплаченные счета.Как удалить оба дубликата из словаря?

Что я сделал, это добавить все записи в словарь в моем редукторе. Как удалить записи, которые происходят дважды или более, чтобы я остался с оплаченными счетами в моем словаре?

+0

вы можете привести пример? Как вы организуете данные? Являются ли файлы .csv только для одного человека? – kbunarjo

+0

Несколько человек в ресторане. Например, theres 'A', который не заплатил свой счет, поэтому он появляется как в all-bills.csv, так и в open-bills.csv. Если я создам словарь таким образом, что А станет ключом, мне придется записать две записи в моем словаре из обоих файлов. Если это произойдет, я хочу удалить их обоих, чтобы у меня остались только те люди, которые заплатили свои счета. – Shehryar

+0

Являются ли данные в ваших файлах csv организованными (уникальными) идентификаторами счетов? Или вокруг идентификаторов клиентов? Именование означает, что запись в файле csv выглядит следующим образом: billID, custID, bill-detail-1, bill-detail-2 и т. Д. - это так? BTW, может быть проще иметь только один CSV-файл с дополнительным столбцом «статус счета», который будет указывать статус счета «Paid», «Open», «Other», ... – Denis

ответ

0

Попробуйте это:

{k: v for k, v in all_bills.items() if k not in open_bills}