pipilang3220119
2021-08-24 12:49
采纳率: 100%
浏览 62
已采纳

python简单问题

a = [{'a': 1, 'b': 2}, {'a': 2, 'b': 3}]
kl = {'a': 0, 'b': 0}


def my_add(dataListDict, keylist):
    for x in dataListDict:
        for y in keylist:
            keylist[y] += x[y]
    return keylist


print(my_add(a, kl))

print(my_add(a, kl))

为什么结果是:

{'a': 3, 'b': 5}
{'a': 6, 'b': 10}

而不是:

{'a': 3, 'b': 5}
{'a': 3, 'b': 5}
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 天元浪子 2021-08-24 17:00
    已采纳

    原因已经有同学讲清楚了。要想多次调用结果保持不变,请使用deepcopy

    >>> import copy
    >>> a = [{'a': 1, 'b': 2}, {'a': 2, 'b': 3}]
    >>> kl = {'a': 0, 'b': 0}
    >>> def my_add(dataListDict, keylist):
    
        for x in dataListDict:
    
            for y in keylist:
    
                keylist[y] += x[y]
    
        return keylist
    
    >>> print(my_add(copy.deepcopy(a), copy.deepcopy(kl)))
    {'a': 3, 'b': 5}
    >>> print(my_add(copy.deepcopy(a), copy.deepcopy(kl)))
    {'a': 3, 'b': 5}
    
    评论
    解决 无用
    打赏 举报
查看更多回答(4条)

相关推荐 更多相似问题