您好想了解如何使用字典理解来缩短此代码:
for e in list_of_tuples:
tmp = mydict.copy()
tmp[e[0]] = tmp[e[1]]
if someFunction(tmp):
mydict = tmp
我想将字典理解传递给someFunction
而不是依赖其值在循环中更改的临时字典。可能吗?
您好想了解如何使用字典理解来缩短此代码:
for e in list_of_tuples:
tmp = mydict.copy()
tmp[e[0]] = tmp[e[1]]
if someFunction(tmp):
mydict = tmp
我想将字典理解传递给someFunction
而不是依赖其值在循环中更改的临时字典。可能吗?
这个答案假设 someFunction 不会改变字典
传递给的字典someFunction
仍然是 的基本副本mydict
,但这是我能想到的以理解方式回答问题的唯一方法。
for e in list_of_tuples:
if someFunction({key: val if key != e[0] else mydict[e[1]] for key,val in mydict }):
mydict[e[0]] = mydict[e[1]]
然而,更快/更简单的方法是只为 制作一个临时变量,并在失败mydict[e[0]]
后将其更改回来。someFunction
也有额外的线路并不总是一件坏事。它通常可以帮助提高可读性、解决错误和维护......尤其是对于新程序员。
for e in list_of_tuples:
temp = mydict[e[0]]
mydict[e[0]] = mydict[e[1]]
if not someFunction(mydict):
mydict[e[0]] = temp