-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbygen.py
More file actions
105 lines (93 loc) · 3.85 KB
/
bygen.py
File metadata and controls
105 lines (93 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import csv
import time
dict_item = {
'id':[],
'item': {
'items' : [],
'price': []
}
}
def read_files(filenames):
for name in filenames:
try:
openfile = open(name, 'rb')
except IOError:
print "File not found"
exit()
reader = csv.reader(openfile)
for line in reader:
yield line
def getitemsmatch(pattern, dict_item, start):
max_list = []
min_price = []
for ind, item in enumerate(dict_item['id']):
import pdb; pdb.set_trace()
min_val = min(dict_item['item']['price'][ind])
min_index = dict_item['item']['price'][ind].index(min_val)
match = set(dict_item['item']['items'][ind][min_index]) & set(pattern)
if match == set(pattern):
if min_price:
if min_price > min_val:
min_price[0] = min_val
else:
max_list.append(item)
min_price.append(min_val)
else:
get = False
matched = []
price = []
while len(dict_item['item']['price'][ind]) > 0 or get=True:
price.append(min_value)
dict_item['item']['price'][ind].remove(min_val)
matched.append(dict_item['item']['items'][ind][min_index])
min_val = min(dict_item['item']['price'][ind])
min_index = dict_item['item']['price'][ind].index(min_val)
# will need to implement this here
end = time.time()
print dict_item, end-start
def printlines(pattern, lines, start):
for line in lines:
if len(line) >=1:
if int(line[0]) in dict_item['id']:
#import pdb; pdb.set_trace()
st = []
ind = dict_item['id'].index(int(line[0]))
if set([i for i in pattern]) & set([l.strip() for l in line[2:]]):
indexval = 0
try:
#import pdb; pdb.set_trace()
length = len(dict_item['item']['price'][ind])
min_price = min(dict_item['item']['price'][ind])
if line[1].strip() < dict_item['item']['price'][ind][length - 1]:
dict_item['item']['price'][ind].insert(length-1, line[1].strip())
indexval = length - 1
else:
dict_item['item']['price'][ind].insert(indexval, line[1].strip())
except IndexError:
dict_item['item']['price'].append([line[1].strip()])
for val in line[2:]:
#import pdb; pdb.set_trace()
if val.strip() in pattern:
st.append(val.strip())
try:
dict_item['item']['items'][ind].insert(indexval, st)
except IndexError:
dict_item['item']['items'].append([st])
else:
#import pdb; pdb.set_trace()
st = []
dict_item['id'].append(int(line[0]))
if set([i for i in pattern]) & set([l.strip() for l in line[2:]]):
dict_item['item']['price'].append([line[1].strip()])
for val in line[2:]:
#import pdb; pdb.set_trace()
if val.strip() in pattern:
st.append(val.strip())
dict_item['item']['items'].append([st])
# function call
getitemsmatch(pattern, dict_item, start)
def main_function(pattern, filenames):
start = time.time()
lines = read_files(filenames)
printlines(pattern, lines, start)
main_function(["tea", "toffee"], ['sample_data_4.csv'])