python - Add key/values to dictionary using condition -
i have list of items i'm adding dictionary below:
cols = ['cust', 'model', 'sn', 'date', 'charge', 'qty', 'total'] open('userfeeinvoicing.csv', 'r') infile: ranpak_dict = { row[2]: dict(zip(cols, row)) row in csv.reader(infile) }
is there anyway add records have charge =/= 0
or charge > 0
rather use csv.reader()
, use csv.dictreader()
object. object makes lot easier both create dictionaries , filter rows; code, refactored use dictreader()
, looks this:
cols = ['cust', 'model', 'sn', 'date', 'charge', 'qty', 'total'] open('userfeeinvoicing.csv', 'r') infile: reader = csv.dictreader(infile, fieldnames=cols) ranpak_dict = {row['sn']: row row in reader}
the csv.dictreader()
object exactly dict(zip(cols, row))
call does; build dictionary each row, given sequence of fieldnames.
filtering in list, dict or set comprehension works adding additional loops; add if <condition>
loop:
ranpak_dict = {row['sn']: row row in reader if int(row['charge']) > 0}
note int()
call; assuming charge
column always contains digits.
if textual fields quoted, set quoting=csv.quote_nonnumeric
, @ point columns without quotes automatically converted float
you. that'd reduce code to:
reader = csv.dictreader(infile, fieldnames=cols, quoting=csv.quote_nonnumeric) ranpak_dict = {row['sn']: row row in reader if row['charge'] > 0}
Comments
Post a Comment