我目前有:
tmp = myfunc()
mydict[mykey] = tmp
return tmp
..这似乎有点太长了。在javascript中,我可以这样做:
return (mydict[mykey] = myfunc())
上面的 Python 代码是公认的方法,还是有别的方法?
编辑:我知道这样做的可能性:
mydict[mykey] = myfunc()
return mydict[mykey]
..但我不想进行两次密钥查找。除非
tmp = mydict[mykey] = myfunc()
return tmp
如果你想要更少的代码行,你可以这样做:
mydict[mykey] = myfunc()
return mydict[mykey]
但是,赋值不是 Python 中的表达式,因此您不能使用 javascript 版本。
编辑:如果您知道密钥不在字典中,您可以这样做:
return mydict.setdefault(mykey, myfunc())
setdefault
是一个查找函数,如果键不在字典中,则将键设置为第二个值。
您还可以编写一个辅助函数:
def set_and_return(d, k, v):
d[k] = v
return v
然后,在其他任何地方,您都可以:
return set_and_return(mydict, mykey, myfunc())
意见各不相同,但这是我的 0.02 美元。
@gnibbler
有一个不错的“更少的代码行”解决方案,但我不建议这样做,并且阅读了很多 python 源代码我很少看到这种语法(在函数的开头比其他任何地方都多)我很欣赏它在 javascript 中是如何发生的,但它是被接受的方式:我投票支持您的原始格式,最容易阅读和理解,并且不比任何其他解决方案更慢或效率更低。
tmp = myfunc()
mydict[mykey] = tmp
return tmp