【发布时间】:2019-11-08 14:09:29
【问题描述】:
我正在研究一个问题,该问题需要指出函数中的问题,该函数确定字典是否可逆(对于字典中出现的每个值,只有一个键映射到该值)。问题如下:
def is_invertible(adict):
inv_dict = make_inv_dict(adict)
return adict == inv_dict
def make_inv_dict(adict):
if len(adict) > 0:
key, val = adict.popitem()
adict = make_inv_dict(adict)
if val not in adict.values():
adict[key] = val
return adict
else:
return {}
目前,当 {'a': 'b', 'b': 'e', 'c': 'f'} 应该是 True 时,它会返回 False。我确定make_inv_dict 函数存在问题;仅仅是因为adict 在adict = make_inv_dict(adict) 中不是一个合适的变量名吗?还是函数返回错误结果的其他原因?
【问题讨论】:
-
您可以简单地使用
len(set(adict.values())) == len(adict)检查字典是否可逆。
标签: python dictionary inverse