函数内部的Python字典没有更新新值



我正在尝试用新值替换输入的字典。我不明白为什么字典的值在函数之外没有改变。这很奇怪,因为我记得这个工作之前…

def multiply_by_term(poly, term):
new_values = []
for key in poly:
new_values.append(poly[key] * term[1])

new_key_assign = list(poly.keys())
for i in range(len(new_key_assign)):
new_key_assign[i] += term[0]

poly = dict(zip(new_key_assign, new_values))

我尝试用dict()和zip()函数改变多边形的值,但是当我检查函数调用后多边形的值时,多边形不会改变。

通过编写poly = dict(zip(new_key_assign, new_values)),您将使其成为与进入函数时不同的对象。因此,为了保持您的字典相同的id,您只需在修改它之前清除它:

def multiply_by_term(poly: dict, term: list):
new_values = [poly[key] * term[1] for key in poly]
new_key_assign = list(poly.keys())
for i in range(len(new_key_assign)):
new_key_assign[i] += term[0]
poly.clear()
for i, key in enumerate(new_key_assign):
poly[key] = new_values[i]
poly = {1: 2, 3: 4, 5: 6}
multiply_by_term(poly, [10, 20])

相关内容

  • 没有找到相关文章

最新更新