|  | 
 
 发表于 2018-8-14 10:33:54
|
显示全部楼层 
| 本帖最后由 graceasyi 于 2018-8-14 10:35 编辑 
 第一种方法只能处理顺序的情况,就是题目中的dict。第二种方法可处理非顺序情况。
 
 
 复制代码def fun195_1(dict1, key):
    tmp = []
    for k, v in dict1.items():
        tmp.append(k)
        if key == k:
            key = v
    return None if key in tmp else key
def fun195_2(dict1, key):
    v = dict1[key]
    tmp = []
    while True:
        tmp.append(v)
        try:
            v = dict1[v]
            if v in tmp:
                return None
        except KeyError:
            break
    return v
d1 = {"A": "B", "B": "C", "C": "D", "E": "F"}
d2 = {"A": "B", "B": "C", "C": "D", "D": "B"}
d3 = {"A": "B", "C": "D", "B": "C", "D": "F", "F": "E", "E": "G"}
d4 = {"A": "B", "C": "D", "B": "C", "D": "F", "F": "E", "E": "D"}
print(fun195_2(d1, 'A'))
print(fun195_2(d1, 'E'))
print(fun195_2(d2, 'A'))
print(fun195_2(d3, 'B'))
print(fun195_2(d4, 'A'))
 结果:
 D
 F
 None
 G
 None
 | 
 |