繁体   English   中英

遍历字典python

[英]Looping through dictionary python

我在计算路线上的时间时遇到问题。 它以表示路由的字典开头:

Routing = [('Car1', 'C3', 'C2'),('Car1', 'IT', 'C3'),('Car1', 'C2', 'C4'),('Car1', 'C6', 'IT'),('Car1', 'C4', 'C5'),('Car1', 'C5', 'C6')]

路由中从i [1]到i [2]的每个移动都有自己的时间,并且有一个IT的开始时间:

Time = {('C3', 'C2'): 0,('IT', 'C3'): 14,('C2', 'C4'): 1,('C6', 'IT'): 14,('C4', 'C5'): 0,('C5', 'C6'): 0}
Start_time_IT: 128

如您所见,car1的路由为IT,C3,C2,C4,C5,C6,IT。 IT的起点和终点。 我需要计算每个步骤的到达时间,最后得到一个像这样的字典:

Arrival_time = {'C3': 142, 'C2': 142, 'C4': 143, 'C5': 143, 'C6':, 143, 'IT': 157} 

例如,C3是根据IT的开始时间(128)和到C3的旅行时间(14)计算得出的,其余部分我得出142,以此类推。

现在,我确实在努力构建Arrival_time。 我已经尝试过for和while循环,但是我没有获得Arrival_time在循环期间更改的错误的正确值。

上面是一个示例,实际上路线是多辆汽车和更多停靠点。 有谁知道我如何解决上述情况?

提前Tnx!

使用您提供的信息,这可以帮助您走上正确的道路。 我不知道您在做什么的完整背景,因此可能不是最佳选择。

def make_route(car, routing):
    # multiple cars in routing so only get connections for the one we want
    connections = [(r[1],r[2]) for r in routing if r[0] == car]

    # get start
    route = [c for c in connections if c[0] == 'IT']

    # join connections
    while route[-1][1] != 'IT':
        route += [c for c in connections if c[0] == route[-1][1]]

    return route


def time_route(route, Time, start_time=0):
    times = []
    for r in route:
        # look up time for the connection and add to running total
        start_time += Time[r]
        # add times to list - dictionaries don't preserve order
        times.append((r[1], start_time))
    return times

r = make_route('Car1', Routing)
Arrival_time = time_route(r, Time, 128)

这应该返回[('C3', 142), ('C2', 142), ('C4', 143), ('C5', 143), ('C6', 143), ('IT', 157)] 这是一个列表,因为字典不会保留顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM