Python for循环更新不应更新的初始值

时间:2017-04-04 02:19:29

标签: python debugging dictionary

我有一个函数读取一些数据,然后更新键的计数。问题是它正在更新我不想更新的初始值。我的功能逻辑很简单。

首先,初始化起始值,结果是一个空字典,初始计数值是一个长度为2的列表。

  1. 读入数据(通常来自sys.stdin)

  2. 对于键列表中的每个键,从字典中获取键值。如果密钥不在字典中,则返回一些初始起始值[0,0]

  3. 更新计数+=1+=2

  4. 更新词典中的键/值

  5. 以下是我的脚本的基本示例

    keys = list("aaaaabbbbb") ## values that would be read in from stdin
    
    
    initial = [0,0] ## some initial values 
    results = {}
    for key in keys:
        count = results.get(key, initial) ## if key not in dicitionary, use the initial values
        print key, count
        count[0] += 1 ## update current count
        count[1] += 2 ## update current count
        results[key] = count ## update values for given key
    
    print initial ## initial values have changed without explicit update of initial values
    

    我的问题是我设置的初始值也在更新。我认为这是results.get(key, initial)的副产品。我的问题不是那么多,“我如何解决这个问题?”而是“为什么会发生这种情况?”这样我可以更好地了解情况并编写更好的代码。

    有没有办法检查此场景的全局变量更新?

0 个答案:

没有答案