已知a,b
以及b,c
的關(guān)系嗅虏,如何得到a,c
關(guān)系
題目
399. Evaluate Division
解法
1秘蛔、用到Python中的collections
模塊,collections.defaultdict()
比傳統(tǒng)dict
更加靈活饼丘,對不存在的key
返回值為None
笼恰。(其實也可以直接用{})
2、字典內(nèi)可以構(gòu)建字典朴则,多層字典疊加的方法权纤。
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