def make_services(routes_data):
routes = []
curr_route = []
x = split_routes(routes_data)
service_data1 = x[1] # (’106’, [(’106’, ’1’, ’1’, ’43009’), ... , (’106’, ’2’, ’51’, ’43009’)])
service_data = service_data1[1] #[(’106’, ’1’, ’1’, ’43009’), ... , (’106’, ’2’, ’51’, ’43009’)]
first = service_data[0] #('106', '1', '1', '43009')
service_code = first[0]
curr_dir = first[1] # '1'
l = list(curr_dir) # ['1']
for entry in service_data:
direction = entry[1] #'1'
stop = entry[3] #'43009'
if direction == curr_dir:
curr_route.append(stop) #[43009]
else:
routes.append(curr_route) #[[]]
curr_route = [stop] #['43009']
curr_dir = direction #not '1'
l.append(direction) # ['1', __]
routes.append(curr_route) #[['43009']]
#modi
return [(tuple([service_code] + [l] + [[curr_route]]))]
基本上我的代码只返回我
[('106', ['1', '2'], [['43009', ... '43009']])]
但我需要的是
[ ('106', ['1', '2'], [['43009', ... '43009']]),
('171', ['1', '2'], [['59009'...'59009]]),
('184', ['1'], [['45009'... '45009']]) ]
x = split_routes(routes_data)返回我
[(’171’, [(’171’, ’1’, ’1’, ’59009’), ... , (’171’, ’2’, ’73’, ’59009’)]),
(’106’, [(’106’, ’1’, ’1’, ’43009’), ... , (’106’, ’2’, ’51’, ’43009’)]),
(’184’, [(’184’, ’1’, ’1’, ’45009’), ... , (’184’, ’1’, ’52’, ’45009’)])]
我相信我的循环在顶部有问题...应该有2个循环?并给出了一个暗示,我可以使用地图。
这里的routes_data是bus_stations.txt
106,1,1,43009
.
.
.
106,2,51,43009
171,1,1,59009
.
.
.
171,2,73,59009
184,1,1,45009
.
.
.
184,1,52,45009
答案 0 :(得分:0)
我认为你需要更多的东西:
def make_services(routes_data):
output = []
for service in split_routes(route_data):
# service == (’171’, [(’171’, ’1’, ’1’, ’59009’), ... , (’171’, ’2’, ’73’, ’59009’)])
code = service[0] # 171
directions = []
route = []
for stop in service[1]:
# stop == (’171’, ’1’, ’1’, ’59009’)
if stop[1] not in directions:
directions.append(stop[1])
route.append(stop[3])
output.append((code, directions, route))
return output
output
中的每个项目都是code
,directions
列表和route
列表的三元组,例如
output == [('171', ['1', '2'], ['59009', ..., '59009']), ... ]
您可以考虑将(某些)这些值int()
用于进一步处理,或者将它们保留为字符串。
答案 1 :(得分:0)
您只返回[(tuple([service_code] + [l] + [[curr_route]]))]
,这只是一个条目,
这就是为什么你只得到:
[('106', ['1', '2'], [['43009', ... '43009']])]
您需要将所有条目存储在一个列表中,例如results
并在其中附加循环中的每个条目,如:
results.append(tuple([service_code] + [l] + [[curr_route]]))
并返回:
return results