Easier way to do this?

20/20 Lab lab at 2020fresno.com
Thu Oct 5 11:34:24 EDT 2017



On 10/04/2017 04:48 PM, Dennis Lee Bieber wrote:
> On Wed, 4 Oct 2017 09:42:18 -0700, 20/20 Lab <lab at 2020fresno.com> declaimed
> the following:
>
> 	Well -- since your later post implies this is not some "homework
> assignment"...
>
>> Looking for advice for what looks to me like clumsy code.
>>
>> EMP1 = [0,0]
>> EMP2 = [0,0]
>> EMP3 = [0,0]
>>
> 	EEEK! Don't do that! Especially as...
>
>> for line in (inputfile):
>>      content = line.split(",")
> 	You've already been told to use the CSV module, since it should handle
> tricky cases (quoted strings with embedded commas, say).
>
>>      if content[18] == "EMP1":
> ... the name is part of the input data. Use a data structure in which the
> name is part of the data -- like a dictionary.
>
>>          if float(content[24]) < 99.75:
>>              EMP1[0] += 1
>>          elif float(content[24]) > 99.74:
>>              EMP1[1] += 1
> 	Pardon? Floating point numbers are not exact... It is possible that
> some entry, in floating binary, is really between 99.75 and 99.74, so which
> should it be counted as? At the least, just use an else: for the other
> case.
>
>
>
> employees = {}
> for row in csvfile: #pseudo-code for however you read each row of data
>
> 	emp = employees.get(content[18], [0, 0])
> 	if float(content[24]) < 99.75
> 		emp[0] += 1
> 	else:
> 		emp[1] += 1
> 	employees[content[18]] = emp
>
>
>> and repeat if statements for the rest of 25+ employees.  I can make a
>> list of the employees, but I'd prefer to pull them from the csv, as our
>> turnover is rather high (however this is not important).  I'm thinking
>> another "for employee in content[18]" should be there, but when I tried,
>> my numbers were incorrect.
> 	Actually -- I'd be more likely to load the data into an SQLite3
> database, and use SQL queries to produce the above summary report. I'd have
> to experiment with subselects to get the > and < sets, and then use a
> count() and groupby to put them in order.
Thanks!  I knew there was an more refined way to do this.  I'm still 
learning, so this is a huge help.
The data actually already comes from a database, but doesnt allow me to 
produce a summary report, just a list of of each item.  Which I can then 
export to pdf, or the csv that I'm working with.  The developers have a 
ticket for a feature request, but they've had it there for over five 
years and I dont see them implementing it anytime soon.



More information about the Python-list mailing list