all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
30
Task/Top-rank-per-group/Python/top-rank-per-group-1.py
Normal file
30
Task/Top-rank-per-group/Python/top-rank-per-group-1.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
from collections import defaultdict
|
||||
from heapq import nlargest
|
||||
|
||||
data = [('Employee Name', 'Employee ID', 'Salary', 'Department'),
|
||||
('Tyler Bennett', 'E10297', 32000, 'D101'),
|
||||
('John Rappl', 'E21437', 47000, 'D050'),
|
||||
('George Woltman', 'E00127', 53500, 'D101'),
|
||||
('Adam Smith', 'E63535', 18000, 'D202'),
|
||||
('Claire Buckman', 'E39876', 27800, 'D202'),
|
||||
('David McClellan', 'E04242', 41500, 'D101'),
|
||||
('Rich Holcomb', 'E01234', 49500, 'D202'),
|
||||
('Nathan Adams', 'E41298', 21900, 'D050'),
|
||||
('Richard Potter', 'E43128', 15900, 'D101'),
|
||||
('David Motsinger', 'E27002', 19250, 'D202'),
|
||||
('Tim Sampair', 'E03033', 27000, 'D101'),
|
||||
('Kim Arlich', 'E10001', 57000, 'D190'),
|
||||
('Timothy Grove', 'E16398', 29900, 'D190')]
|
||||
|
||||
departments = defaultdict(list)
|
||||
for rec in data[1:]:
|
||||
departments[rec[-1]].append(rec)
|
||||
|
||||
N = 3
|
||||
format = " %-15s " * len(data[0])
|
||||
for department, recs in sorted(departments.items()):
|
||||
print ("Department %s" % department)
|
||||
print (format % data[0])
|
||||
for rec in nlargest(N, recs, key=lambda rec: rec[-2]):
|
||||
print (format % rec)
|
||||
print('')
|
||||
27
Task/Top-rank-per-group/Python/top-rank-per-group-2.py
Normal file
27
Task/Top-rank-per-group/Python/top-rank-per-group-2.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
from collections import namedtuple
|
||||
from itertools import groupby
|
||||
|
||||
N = 2
|
||||
|
||||
db = '''Employee Name,Employee ID,Salary,Department
|
||||
Tyler Bennett,E10297,32000,D101
|
||||
John Rappl,E21437,47000,D050
|
||||
George Woltman,E00127,53500,D101
|
||||
Adam Smith,E63535,18000,D202
|
||||
Claire Buckman,E39876,27800,D202
|
||||
David McClellan,E04242,41500,D101
|
||||
Rich Holcomb,E01234,49500,D202
|
||||
Nathan Adams,E41298,21900,D050
|
||||
Richard Potter,E43128,15900,D101
|
||||
David Motsinger,E27002,19250,D202
|
||||
Tim Sampair,E03033,27000,D101
|
||||
Kim Arlich,E10001,57000,D190
|
||||
Timothy Grove,E16398,29900,D190'''
|
||||
|
||||
rows = db.split('\n')
|
||||
DBRecord = namedtuple('DBRecord', rows[0].replace(' ', '_'))
|
||||
records = [ DBRecord(*row.split(',')) for row in rows[1:] ]
|
||||
records.sort(key = lambda record: (record.Department, -float(record.Salary)))
|
||||
print '\n\n'.join('\n '.join([dpt] + [str(g) for g in grp][:N])
|
||||
for dpt, grp in groupby(records,
|
||||
lambda record: record.Department))
|
||||
Loading…
Add table
Add a link
Reference in a new issue