一 python自动化基础能力:3.python基础上之数据类型,函数( 六 )


d和d2指向同一个对象 。
当d中的值改变时,d2中的值也随之改变 。
d = {'a': 1, 'b': 4, 'c': 3, 'e': 5, 'f': 6}d2 = dd['a'] = 7print(d,id(d))print(d2,id(d2))
打印
{'a': 7, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2121296378120{'a': 7, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2121296378120
用copy()方法:
d = {'a': 1, 'b': 4, 'c': 3, 'e': 5, 'f': 6}d2 = d.copy()print(d,id(d))print(d2,id(d2))
打印
{'a': 1, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 3102906251528{'a': 1, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 3102906251608
d和d2指向不同对象 。
当d中的值改变时,d2中的值不会改变 。
d = {'a': 1, 'b': 4, 'c': 3, 'e': 5, 'f': 6}d2 = d.copy()d['a'] = 7print(d,id(d))print(d2,id(d2))
打印
{'a': 7, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2430767003912{'a': 1, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2430767003992
当字典的值为字典时,
d = {'a': {'name':'Tom','age':'20','gender':'male'}, 'b': 4, 'c': 3, 'e': 5, 'f': 6}d2 = d.copy()print(d,id(d))print(d2,id(d2))
打印
{'a': {'name': 'Tom', 'age': '20', 'gender': 'male'}, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2220628113672{'a': {'name': 'Tom', 'age': '20', 'gender': 'male'}, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2220628114392
当d中的值的值改变时,如
d = {'a': {'name':'Tom','age':'20','gender':'male'}, 'b': 4, 'c': 3, 'e': 5, 'f': 6}d2 = d.copy()d['a']['name'] = 'Jerry'print(d,id(d))print(d2,id(d2))
打印
{'a': {'name': 'Jerry', 'age': '20', 'gender': 'male'}, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2104435669336{'a': {'name': 'Jerry', 'age': '20', 'gender': 'male'}, 'b': 4, 'c': 3, 'e': 5, 'f': 6} 2104435670056
复制:即创建已有对象的副本,则原对象改变,副本应该不发生改变,这才是正常的复制 。
修改d时,d中的’a’下的’name’的值也发生了改变,此即浅复制,只会复制字典本身,字典中还有字典不会被复制 。
总结:浅复制只会复制字典本身,如果字典中还有字典,是不会被复制的 。
4.5 遍历字典 keys()
该方法会返回字典所有的键 。
d = {'name':'Tom','age':'20','gender':'male'}for key in d.keys():print(d[key])
打印
Tom20male