-1

您好想了解如何使用字典理解来缩短此代码:

for e in list_of_tuples:
            tmp = mydict.copy()
            tmp[e[0]] = tmp[e[1]]
                if someFunction(tmp):
                    mydict = tmp

我想将字典理解传递给someFunction而不是依赖其值在循环中更改的临时字典。可能吗?

4

1 回答 1

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
于 2014-04-24T15:17:46.560 回答