【发布时间】:2017-01-01 18:19:20
【问题描述】:
for rout in range(1,6):
print 'From: '+str(int(s_dict[rout]['Origin']))+','+' to: '+str(int((s_dict[rout]['Destination'])))+','+' Stops: '+(s_dict[rout]['Stops'])+','+' Cost: '+(s_dict[rout]['Cost'])+','+' Time: '+(s_dict[rout]['Time'])
print 'All routes:'
for n in range(len(all_path[rout-1])):
all_routs=''
for s in range(len(all_path[rout-1][n])):
all_routs+= str(all_path[rout-1][n][s])
stops=str(len(all_routs)-2)
cost=0
for trips in range(len(sec)):
if sec[trips][X]==(all_path[rout-1][n][0]) or sec[trips][X]==(all_path[rout-1][n][1]):
cost+=sec[trips][3]
print '->'.join(all_routs)+', Stops: '+stops+', Cost: '+str(cost)
X 索引不是代码的一部分,因为它是导致问题的原因,我找不到合适的方法来索引它
代码的目的是从s_dict获取“请求”并将其与main_dict的行程信息相匹配。在s_dict[0]中,客户想要从Origin'2'到Destination'5',Cost是0,这意味着价格无关紧要,Time也是如此,Stops是99也意味着有多少并不重要。
现在我应该找到从“2”到“5”的所有可用路径并返回每个成本/消耗时间的数量
s_dict={
1: {'Origin': '002', 'Destination': '005', 'Cost': '0000.00', 'Stops': '99', 'Time': '00.00'},
2: {'Origin': '002', 'Destination': '005', 'Cost': '0000.00', 'Stops': '11', 'Time': '00.00'},
3: {'Origin': '002', 'Destination': '005', 'Cost': '1450.11', 'Stops': '99', 'Time': '00.00'},
4: {'Origin': '004', 'Destination': '005', 'Cost': '1550.11', 'Stops': '99', 'Time': '22.22'},
5: {'Origin': '001', 'Destination': '005', 'Cost': '0000.00', 'Stops': '99', 'Time': '11.00'}}
main_dict=
{1: {'Origin': '001', 'Destination': '002', 'Cost': '0100.00', 'Time': '04.00'},
2: {'Origin': '002', 'Destination': '003', 'Cost': '0500.00', 'Time': '01.50'},
3: {'Origin': '002', 'Destination': '004', 'Cost': '0700.00', 'Time': '10.00'},
4: {'Origin': '002', 'Destination': '005', 'Cost': '1500.00', 'Time': '05.75'},
5: {'Origin': '003', 'Destination': '004', 'Cost': '0200.00', 'Time': '11.40'},
6: {'Origin': '004', 'Destination': '005', 'Cost': '0750.00', 'Time': '10.50'},
7: {'Origin': '004', 'Destination': '006', 'Cost': '0550.00', 'Time': '06.75'}}
我从main_dict 取出了信息,因为这样更容易使用它并制作了sec
秒=[
[1, 2, 4.0, 100.0],
[2, 3, 1.5, 500.0],
[2, 4, 10.0, 700.0],
[2, 5, 5.75, 1500.0],
[3, 4, 11.4, 200.0],
[4, 5, 10.5, 750.0],
[4, 6, 6.75, 550.0]]
all_path=[
[[2, 3, 4, 5], [2, 4, 5], [2, 5]],
[[4, 5]],
[[1, 2, 3, 4, 5], [1, 2, 4, 5], [1, 2, 5]]]
all_path 来自s_dict
在前三种情况下它需要 2 个特定值它是 2->5,这意味着我想从起点 2 到终点 5,我应该显示每个可用的路线,这意味着 2->3->4->5, 2->4->5, 2->5
这就是路径,现在我正在尝试获取每次旅行的费用。
换句话说,如果我们取 2->4->5 则在 s_dict 中它将取 2 作为起点,将 3 作为终点,超出 cost 变量中的成本值,然后将 3 作为起点,将 4 作为终点,将价值成本与cost 变量相加。
我的问题是索引if sec[trips][0]==(all_path[tin-1][n][X]) or sec[trips][1]==(all_path[tin-1][n][X]): 问题主要是如何索引 X “X 不是代码的一部分”
我尝试了很多方法来解决它,但它不起作用,我得到的最好的是它改变目的地并一直保持相同的原点,所以成本为 2->3 + 2->4 + 2->5而不是 2->3 + 3->4 + 4->5
【问题讨论】:
-
我似乎无法计算出我们需要
sec的数据 -
其实我已经读了3遍了,每次都更糊涂了。至少在我的情况下,如果您将文本块分解并使其更具体,会容易得多。例如,我猜想
sec有类似[origin, destination, something, something]的东西,但随后会上升到6,但您最多只有5命名位置。然后我们有s_dict,它只有5作为目的地和99 个“站点”。似乎与另一个无关,我无法从代码中得到它,因为那是错误的。 -
我同意@roganjosh,代码很难阅读。另外,您使用的是什么版本的python?一般来说,请说明一个问题。我们不知道
tin是什么,总的来说一切都不容易理解。 -
这是一个很长的代码,tin只是一个索引伙伴
-
这不是一个特别有用的响应。我们可以看到
tin是一个索引,但我们实际上必须可视化您正在尝试做什么。tin对我们没有任何意义,因此当您有大量嵌套循环并且没有了解发生了什么的基础时,它只会变得更多 混乱。为了解决这个问题,您的代码陷入了困境,它需要重构,并且只有只有在您给出清晰的问题陈述并清楚地表明您的数据结构的含义时才能完成。