常用方法
淺拷貝copy
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
new_dict = a.copy()
new_dict["ilpy1"]["company"] = "wtf"
print(new_dict)
print(a)
print(id(a))
print(id(new_dict))
print(id(new_dict["ilpy1"]["company"]))
print(id(a["ilpy1"]["company"]))
然後我們發現,執行這一步操作時new_dict["ilpy1"]["company"] = "wtf"
,對a也執行了修改,比較id可知new_dict["ilpy1"]["company"]))
和a["ilpy1"]["company"]
指向了同一位置,而a
與new_dict
指向不同位置,這就是淺拷貝的副作用
深拷貝
這並不是dict
自帶的方法而是來自python的一個包copy
import copy
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
new_dict = copy.deepcopy(a)
print(id(a))
print(id(new_dict))
a['ilpy1']['company'] = "666"
print(a)
print(new_dict)
list轉換dict
import copy
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
myList = ['aaa', 'bbb']
new_dict = dict.fromkeys(myList, "2")
print(new_dict)
items
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
for key,value in a.items():
print(key,value)
clear
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
# clear 清楚dict元素
# a.clear()
# print(a)
update
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
a.update(a=1,b=2)
print(a)
傳入可迭代對象也可
a = {"ilpy1": {"company": "aaa"},
"ilpy2": {"company": "bbb"}
}
a.update([('1','2')])
print(a)
a.update((('1','2'),))
print(a)
setdefault
Python 字典 setdefault() 函數和 get()方法 類似, 如果鍵不存在於字典中,將會添加鍵並將值設爲默認值。所以當我們需要快速判斷鍵值對是否存在並且加上去的時候就可以使用此方法