您想了解如何使用字典理解缩短此代码:
for e in list_of_tuples:
tmp = mydict.copy()
tmp[e[0]] = tmp[e[1]]
if someFunction(tmp):
mydict = tmp
我想将字典理解传递给someFunction
,而不是依赖于其值在循环中更改的临时字典。有可能吗?
答案 0 :(得分:0)
这个答案假定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