为什么final_dictionary=starting_dictionary["c"]=7不将添加了键值对的starting_list分配给final_dictionary

问题描述 投票:0回答:1

**这两者有何不同。 ** (1)

starting_dictionary = {
    "a": 9,
    "b": 8,
}
final_dictionary = {
    "a": 9,
    "b": 8,
    "c": 7,
}
final_dictionary = starting_dictionary["c"] = 7
print(starting_dictionary)
print(final_dictionary)

(2)

starting_dictionary = {
    "a": 9,
    "b": 8,
}
final_dictionary = {
    "a": 9,
    "b": 8,
    "c": 7,
}
starting_dictionary["c"] = 7
final_dictionary = starting_dictionary
print(starting_dictionary)
print(final_dictionary)

我的主要疑问是关于(1)代码片段,为什么它不能像这样工作: *starting_dictionary 应该添加一个新的键值对“c”:7 *starting_dictionary 应分配给final_dictionary *现在final_dictionary应该包含所有starting_dictionary并添加键值对

python python-3.x dictionary assign assignment-operator
1个回答
0
投票

在代码片段(1)中,问题在于以下行:

final_dictionary = starting_dictionary["c"] = 7

这行代码没有达到你的目的。它实际上将值7分配给starting_dictionary中的键“c”,然后将相同的值7分配给final_dictionary。它不会使用添加的键值对创建新字典。

因为:

starting_dictionary["c"] = 7:这通过添加键“c”和值 7 来修改starting_dictionary。

final_dictionary =starting_dictionary["c"] = 7: 相当于下面两步-

starting_dictionary["c"] = 7:修改starting_dictionary。 Final_dictionary = 7:将值 7 赋给 Final_dictionary。 因此,执行此行后,starting_dictionary 和 Final_dictionary 都指向值 7,而不是字典。

另一方面,代码片段(2) 正确地将键值对添加到starting_dictionary,然后将starting_dictionary的引用分配给final_dictionary。因此,在执行代码段(2)中的代码后,两个词典将具有相同的内容。

© www.soinside.com 2019 - 2024. All rights reserved.