我很确定你的意思是期望的输出不是集合d = {1,{'a','c'},2,{'b','c'}}
而是字典
^{pr2}$
再检查一遍这里:-). 在
不管怎样,我会这么做的:
^{3}$
如果^{子类defaultdict可以简化为return,如果规范对此非常严格,则只需将其转换为dict。在
我想下一步很可能是一个“oops,imports are not allowed”来禁止collections.defaultdict,所以我预计在这种情况下,应该这样做(例如)def invert_dict(d):
result = {}
for k in d:
if d[k] not in result:
result[d[k]] = set()
result[d[k]].add(k)
return result
补充:显然,最新版本是至关重要的(当然,在第一时间“忘记”添加“禁止进口”的限制,为什么他们总是对我这样做?!所有的约束条件都会暴露出来吗但是一个调整是必要的,单例集合需要变成他们唯一元素的非集合(一个可怕的,可怕的,没有好的规范,使得最终的字典几乎无法使用,并且让我强烈希望有一些尖锐的词,没有任何好的地方,似乎相信制造令人讨厌的坏规格可以提高他们的教学,但是,这就是又一次咆哮)。在
无论如何,最好是添加一个后处理步骤:def invert_dict(d):
result = {}
for k in d:
if d[k] not in result:
result[d[k]] = set()
result[d[k]].add(k)
return {k: d[k] if len(d[k])>1 else d[k].pop() for k in d}
没什么难做的:只需“展开”singleton就可以使用pop来设置它们的一个项。(下一个迟来的启示是,另一个愚蠢的武断约束,比如“没有if/else表达式”?!-)在
添加(保留上面的错误代码):需要在return语句中清楚地使用resultnotd!一、 最后一行必须是return {k: result[k] if len(result[k])>1 else result[k].pop() for k in result}