已知a,b
以及b,c
的关系,如何得到a,c
关系
题目
解法
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