|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 画个圈圈XZQ 于 2021-3-24 20:47 编辑
dict1 = {}
dict2 = {}
a = 0
b = 2
c = "A"
while b:
dict1[a] = input("输入dict[a]的值:")
dict2[c] = dict1
print(dict2,dict1)
a = 1
c = "B"
b -= 1
运行结果如下:
输入dict1[a]的值:a
{'A': {0: 'a'}} {0: 'a'}
输入dict1[a]的值:b
{'A': {0: 'a', 1: 'b'}, 'B': {0: 'a', 1: 'b'}} {0: 'a', 1: 'b'}
第一次循环字典dict4中的键"A"的值为{0 : "a"},第二次循环后键"A"的值又变成了{0 :"a" , 1 : "b"},
将dict1换成列表的形式也是一样,试了下把 dict1 = {} 放在循环初始位置键"A"的值就不会变。
为什么像上面那样ta的值会变成下一次循环键的值
本帖最后由 代码小白liu 于 2021-3-24 21:29 编辑
while 2 输入dict1[a]的值:a 这时候就按照循环要求,第一次打印dict2{},dict1{},因为原始都是空,所以dcit1{0:“a”},dict2{"A":dict1{}},也就是{'A': {0: 'a'}},【注意此时print下边的还未运行
然后继续循环,此时 a = 1 c = "B" b -= 1 正常运行 判断 while 1 ,然后输入输入 dict1[a]的值:b 也就是{1:"b"} 加入到上次一的dict1中,就是{0: 'a', 1: 'b'}, 然后再看dict2,就是{"B":dict1} 一次循环时dict2 已经等于{'A': {0: 'a'}},所以此时应该等于,{{"A":dict1}{"B":dict1}} 也就是 {'A': {0: 'a', 1: 'b'}, 'B': {0: 'a', 1: 'b'}} 然后 dict2 ={'A': {0: 'a', 1: 'b'}, 'B': {0: 'a', 1: 'b'}} dict1 = {0: 'a', 1: 'b'}
就是最终的结果
|
|