关系问题

已知a,b以及b,c的关系,如何得到a,c关系

题目

关系问题_第1张图片
399. Evaluate Division

解法

1、用到Python中的collections模块,collections.defaultdict()比传统dict更加灵活,对不存在的key返回值为None。(其实也可以直接用{})
2、字典内可以构建字典,多层字典叠加的方法。

    def calcEquation(self, equations, values, queries):
        """
        :type equations: List[List[str]]
        :type values: List[float]
        :type queries: List[List[str]]
        :rtype: List[float]
        """
        import collections
        res = []
        quot = collections.defaultdict(dict)
        for (a, b), val in zip(equations, values):
            quot[a][a] = quot[b][b] = 1
            quot[a][b] = val
            quot[b][a] = 1/val
        for a in quot:
            for b in quot[a]:
                for c in quot[a]:
                    quot[b][c] = quot[a][c]/quot[a][b]
        for (a,b) in queries:
            if quot[a].get(b):
                res.append(quot[a][b])
            else:
                res.append(-1)
        return res

你可能感兴趣的:(关系问题)