外部函数循环返回正确的变化,在函数内部运行时不显示变化

时间:2016-07-06 22:47:29

标签: function loops for-loop dictionary iteration

我正在迭代dict中的旧键。我已经测试了函数外部的for循环并获得了预期的结果但是当我将它放入函数时,它会返回旧的键。

一直拖着论坛,但什么都没有。

edu_dict = {
        "A.S":"Attended Vocational/Technical",
        "AAS":"Attended Vocational/Technical",...etc}

def clean_edu(edu_dict):

    for i in list(edu_dict):

        key = i  # accesing the key from the edu_dic
        lower_case = key.lower() # changing the key to lower case

        char_change = "".maketrans(chars_in, chars_out)        

        clean = lower_case.translate(char_change)      

        y = re.sub(r'\s\s{1,}','',clean)

        edu_dict[y] =  edu_dict.pop(i)      

        return edu_dict

clean_edu(edu_dict)
print(edu_dict)

这似乎是一个简单的解决方案,但我很难过。

2 个答案:

答案 0 :(得分:0)

我认为你要么没有将引用传递给clean_edu,要么你没有保存clean_edu的返回值。在这两种情况下,您都要清理字典的副本,而不是按预期更改原始对象。然后打印原始未修改的字典。

答案 1 :(得分:0)

您需要传递对字典的引用,否则您只需在函数中修改它的副本。该函数修改此副本,但在函数外部,原始字典将保持不变。