讀取和拷貝
if __name__ == '__main__':
print()
dictInfo = {1: "This is one", 2: "", 3: '', 5: "This is five"}
# 字典的讀取
assert (len(dictInfo[1]) > 0)
assert (len(dictInfo[2]) <= 0)
assert (len(dictInfo[3]) <= 0)
if 4 in dictInfo:
assert (len(dictInfo[4]) <= 0)
else:
print("4 is not in dictInfo")
# 字典的引用拷貝
# (1) 直接賦值,對象的引用(別名)
dic1 = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
dic2 = dic1
dic2["Name"] = "Demo"
print("dic1", json.dumps(dic1))
print("dic2", json.dumps(dic2))
# print(json.dumps(dic1, sort_keys=True, indent=4, separators=(',', ':')))
# (2) copy函數(shù) 拷貝父對象,不會拷貝對象的內(nèi)部的子對象,數(shù)組也是個引用
dic1 = {"Name": "HaiCoder", "Age": 100, "Score": 99.5, "phone": [10086, 10010]}
dic2 = dic1.copy()
dic2["Name"] = "Demo"
print("dic1", json.dumps(dic1))
print("dic2", json.dumps(dic2))
dic1["phone"].append(10000)
dic2["phone"].append(20000)
print("dic1", json.dumps(dic1))
print("dic2", json.dumps(dic2))
# (3) copy.deepcopy, 完全拷貝了父對象及其子對象
dic1 = {"Name": "HaiCoder", "Age": 100, "Score": 99.5, "phone": [10086, 10010]}
dic2 = copy.deepcopy(dic1)
dic2["Name"] = "Demo"
print("dic1", json.dumps(dic1))
print("dic2", json.dumps(dic2))
dic1["phone"].append(10000)
dic2["phone"].append(20000)
print("dic1", json.dumps(dic1))
print("dic2", json.dumps(dic2))
#(4) copy.copy 淺拷貝
a = [1, 2, 3, 4, ['a', 'b']] # 原始對象
b = a # 賦值,傳對象的引用
c = copy.copy(a) # 對象拷貝,淺拷貝
d = copy.deepcopy(a) # 對象拷貝,深拷貝
a.append(5) # 修改對象a
a[4].append('c') # 修改對象a中的['a', 'b']數(shù)組對象
print('a = ', a) # [1, 2, 3, 4, ['a', 'b', 'c'], 5]
print('b = ', b) # [1, 2, 3, 4, ['a', 'b', 'c'], 5]
print('c = ', c) # [1, 2, 3, 4, ['a', 'b', '4'], 5]
print('d = ', d) # [1, 2, 3, 4, ['a', 'b']]
文章來源地址http://www.zghlxwxcb.cn/news/detail-507029.html
創(chuàng)建和類型
if __name__ == '__main__':
print()
# {} 創(chuàng)建字典詳解
dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
print(dic)
print(type(dic)) # 使用 type() 函數(shù),獲取字典類型
# 使用 fromkeys()
# dictName = dict.fromkeys(list,value=None), list 參數(shù)表示字典中所有鍵的列表,value 參數(shù)默認(rèn)為 None,表示所有鍵對應(yīng)的值
keys = ("Name", "Age", "Score")
dic = dict.fromkeys(keys)
print(dic)
dic["Name"] = 1
dic["Age"] = "2"
dic["Score"] = [1, "2"]
dic["Phone"] = {10086, 10010}
print(dic)
print(type(dic["Score"]), type(dic["Phone"])) # Score是list,Phone是set
# 使用 dict() 創(chuàng)建字典詳解
# dic = dict(one=1, two=2, three=3) # 用這種方式創(chuàng)建字典的 key 不需要加雙引號
dic = dict(Monday=1, Tuesday=2, Wednesday=3, Thursday=4, Friday=5)
print(dic)
訪問和遍歷
if __name__ == '__main__':
print()
dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
# (1)使用key作為下標(biāo)訪問,如果鍵不存在,程序會拋出異常
print(dic["Name"])
# (2)使用 get() 方法訪問,如果鍵不存在,程序會不會拋出異常,而是返回一個空值,同時該方法可以設(shè)置鍵不存在時,使用的默認(rèn)值。
print(dic.get("Name"), dic.get("name", "nil"), dic.get("name"))
if dic.get("name") is None:
print("name not in dic")
# (3)使用 items() 訪問,返回是一個 key 對應(yīng)一個 value 的元祖的列表的形式
print(dic.items())
# (4)使用 keys() 訪問,返回的是字典的所有的key list
print(dic.keys())
# (5)使用 values() 訪問,返回的是字典的所有的val list
print(dic.values())
# 遍歷
print("------(1)遍歷key------")
for key in dic:
print(key)
print("------(2)遍歷key------")
for key in dic.keys(): # for key in a和 for key in a.keys() 完全等價
print(key)
print("------(3)遍歷val------")
for value in dic.values():
print(value)
print("------(4)遍歷k-v------")
for kv in dic.items():
print(kv, kv[0], kv[1])
# 為啥這里的key和value必須是string
dic = {"Name": "HaiCoder", "Age": "100", "Score": "99.5"}
print("------遍歷k-v------")
for (key, value) in dic.items():
print(key + ':' + value)
for key, value in dic.items():
print(key + ':' + value)
刪除和彈出
if __name__ == '__main__':
print()
# 刪除單個元素、刪除整個元素
dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
# del dic["Phone"] 報錯
del dic["Name"]
print("dic", dic)
del dic
# print("dic", dic) 報錯
# 彈出一個元素
# 使用 pop 從字典中彈出不存在的元素
dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
# print("dic Before pop name", dic)
# item = dic.pop("name") 報錯
# print("name =", item, "dic After pop name =", dic)
print("dic Before pop Name", dic)
item = dic.pop("Name")
print("Name =", item, "dic After pop Name =", dic)
dic = {"Name": "HaiCoder"}
print("dic Before pop Name", dic)
item = dic.pop("Name")
print("Name =", item, "dic After pop Name =", dic) # {}
# 使用 popitem 從字典中隨機(jī)返回一個元素
dic = {"Name": "HaiCoder", "Age": 100, "Score": 99.5}
print("dic before popitem =", dic)
item = dic.popitem()
print("Pop Item =", item, "dic after popitem =", dic)
# 從空字典中彈出元素,程序報錯
# dic = {}
# item = dic.popitem() 報錯
# print("Pop Item =", item, "dic after popitem =", dic)
文章來源:http://www.zghlxwxcb.cn/news/detail-507029.html
到了這里,關(guān)于python字典學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!