ここにpythonが新しくなりました。 重複した辞書キーを削除して重複を見つけた場合は、加算/減算などの算術演算を行うだけで、重複した辞書キーを排除したいと考えています。私が欲しいもの辞書は、減算と値の加算と共に重複を削除します。
現在のコード出力
{('GRILLED AUSTRALIA ANGU',): (('1',), ('29.00',)), ('Beer', 'Carrot Cake', 'Chocolate Cake'): (('10', '1', '1'), ('30.00', '2.50', '3.50')), ('Beer', 'Beer'): (('1', '1'), ('3.00', '3.00')), ('Carrot Cake', 'Chocolate Cake'): (('1', '1'), ('2.50', '3.50')), ('Carrot Cake',): (('1',), ('2.50',)), ('BRAISED BEANCURD WITH',): (('1',), ('10.00',)), ('SAUSAGE WRAPPED WITH B', 'ESCARGOT WITH GARLIC H', 'PAN SEARED FOIE GRAS', 'SAUTE FIELD MUSHROOM W', 'CRISPY CHICKEN WINGS', 'ONION RINGS'): (('1', '1', '1', '1', '1', '1'), ('10.00', '12.00', '15.00', '9.00', '7.00', '6.00')), ('Beer', 'Beer', 'Carrot Cake', 'Chocolate Cake'): (('-1', '10', '1', '1'), ('-3.00', '30.00', '2.50', '3.50')), ('Beer',): (('10',), ('30.00',))}
:例:DUPLICATE
{'Beer': [9, 27]} , {'carrot cake': [1, 2.5]} , {'Chocolate Cake': [1, 3.5]}
重複する項目入力のために、私は一緒に一つにビールをトリミングすることを予告FOR
減算(10-1 = 9)、コストは(30-3 = 27)となります。どのように私はこのプロセスを自動化するのですか? Iは、数量(1 + 1)とコスト(3 + 3 = 6)
を有する1つのエントリにと一緒にビール、ビールを追加DUPLICATE
{'Beer': [2, 6]}
通知を
ADDITION私のコード:
import csv
from itertools import groupby
from operator import itemgetter
import re
d = {}
#open directory and saving directory
with open("rofl.csv", "rb") as f, open("out.csv", "wb") as out:
reader = csv.reader(f)
next(reader)
writer = csv.writer(out)
#the first column header
writer.writerow(["item","quantity","amount"])
groups = groupby(csv.reader(f), key=itemgetter(0))
for k, v in groups:
v = list(v)
sales= [ x[1] for x in v[8:] ]
salesstring= str(sales)
#using re.findall instead of re.search to return all via regex for items
itemoutput= re.findall(r"(?<=\s\s)\w+(?:\s\w+)*(?=\s\s)",textwordfortransaction)
#using re.findall instead of re.search to return all via regex for amount aka quantity
amountoutput= re.findall(r"'(-?\d+)\s+(?:[A-Za-z ]*)",textwordfortransaction)
#using re.findall instead of re.search to return all via regex for cost
costoutput= re.findall(r"(?:'-?\d+[A-Za-z ]*)(-?\d+[.]?\d*)",textwordfortransaction)
d[tuple(itemoutput)] = tuple(amountoutput),tuple(costoutput)
#writing the DATA to output CSV
writer.writerow([d])
#to remove the last entry else it would keep on stacking the previous
d.clear()
リンクcsvファイルへ を必要に応じて質問に投稿されたとして、あなたの現在の出力を使用した作業
更新されたコードのplsはちょうど明確化のため – Perlinn
をリフレッシュ:それはそうですあなたはいつも値を加えたいと思っていますが、値のいくつかはちょうど負の値になりますよね? –
2種類の複製が存在します。最初の複製は正の値を持つので、単純にそれらを1つにまとめます。 2番目の値は負の値ですが、1つのキーにダンプしてトリムするだけで、現在の出力セクションが更新されます – Perlinn