字典理解避免代码行

时间:2014-04-24 14:28:20

标签: python dictionary dictionary-comprehension

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

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

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

1 个答案:

答案 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