數據類型的劃分:可變數據類型、不可變數據類型git
可變數據類型: 元組,bool,int,str --可哈希ide
不可變數據類型: list,dict,set --不可哈希 spa
dict key: 必須是不可變數據類型,可哈希code
dict value:能夠是任意數據類型orm
dict優缺點:①利用效率高的二分查找法查詢數據 ②能夠儲存大量的關係型數據 ③Python3.5版本(包括此版本)以前,字典是無序的。在Python3.6版本以後,字典按照初建字典時的順序排列。缺點:內存消耗巨大。blog
1.增內存
①經過鍵值對添加(無key添加,有key則value覆蓋)get
②setdefault(無key添加,有key跳過;有返回值)input
dic1 = {'name': '太白', 'age': 18} # 經過鍵值對直接增長,有key則覆蓋值 dic1['weight'] = 65 dic1['name'] = 'jin-xin' print(dic1) # {'name': 'jin-xin', 'age': 18, 'weight': 65} dic2 = {'name': '太白', 'age': 18} # setdefault 無key添加,有key跳過;有返回值 dic2.setdefault('height', 180) dic2.setdefault('name', 'alex') print(dic2) # {'name': '太白', 'age': 18, 'height': 180} print(dic2.setdefault('name')) # 太白
2.刪it
①pop(經過key刪除鍵值對;有返回值)
②popitem(刪除最後一個(3.6版本以後);有返回值)
③lcear(清空)
④del(刪除)
dic1 = {'name': '太白', 'age': 18, 'height': 180} # pop 經過key刪除鍵值對;有返回值 print(dic1.pop('name'), dic1) # 太白 {'age': 18, 'height': 180} # popitem 刪除最後一個(3.6版本以後);有返回值 print(dic1.popitem(), dic1) # ('height', 180) {'age': 18} # clear 清空 dic1.clear() print(dic1) # {} dic2 = {'name': '太白', 'age': 18, 'height': 180} # del 刪除 del dic2['name'] print(dic2) # {'age': 18, 'height': 180} del dic2 print(dic2) # 報錯
3.改
①經過key直接更改
②update
dic = {'name': '太白', 'age': 18} # 經過key直接更改 dic['name'] = 'alex' print(dic) # {'name': 'alex', 'age': 18} # update dic.update(age=22, height=180) print(dic) # {'name': 'alex', 'age': 22, 'height': 180} dic.update([(1,'a'), (2, 'b')]) print(dic) # {'name': 'alex', 'age': 22, 'height': 180, 1: 'a', 2: 'b'} dic1 = {1: 'a', 2: 'b', 3: 'c'} dic2 = {2: 'b', 3: 't', 4: 'd'} dic2.update(dic1) # 字典1添加/替換到字典2中,有key覆蓋value,無key添加鍵值對 print(dic1) # {1: 'a', 2: 'b', 3: 'c'} print(dic2) # {2: 'b', 3: 'c', 4: 'd', 1: 'a'}
4.查
①經過key查詢
②get
③keys values itmes
dic = {'name': '太白', 'age': 18} # 經過key查詢 print(dic['name']) # 太白 # get 有返回值(可設置) print(dic.get('name')) # 太白 print(dic.get('height')) # None # keys values items print(dic.keys()) # dict_keys(['name', 'age']) print(dic.values()) # dict_values(['太白', 18]) print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])
a = 1 b = 2 print(a, b) # 1 2 a, b = b, a print(a, b) # 2 1 a, b = (123, 321) print(a, b) # 123 321 a, b = ['age', 'high'] print(a, b) # age high a, b = {'name': 'zzl', 'age': 22} print(a, b) # name age
若有下列物品:1:手機, 2:電腦, 3:鼠標墊, 4:遊艇
# 建立一個用戶查詢程序: 1.用戶輸入相應序號,輸出對應物品名稱;若是沒有則提示輸入有誤
# 2.用戶輸入列表或list展現全部:序號 物品
# 如:1 手機
# 2 電腦
# 3 鼠標墊
# ...
# 3.用戶輸入Q或q退出程序
dic = {1: '手機', 2: '電腦', 3: '鼠標墊', 4: '遊艇'} while 1: uaers_in = input('請輸入序號查詢商品(查看商品列表請輸入列表/list;輸入Q/q退出):') if uaers_in == 'list' or uaers_in == '列表': for k, v in dic.items(): print(k, v) elif uaers_in == 'Q' or uaers_in == 'q': print('---程序已退出!---') break else: print(dic.get(int(uaers_in), '輸入有誤,請從新輸入'))
flag = True while flag: li = ["手機", "電腦", "鼠標墊", "遊艇"] for i in li: print('{}\t\t{}'.format(li.index(i)+1,i)) num_of_chioce = input('請輸入選擇的商品序號/輸入Q或者q退出程序:') if num_of_chioce.isdigit(): num_of_chioce = int(num_of_chioce) if num_of_chioce > 0 and num_of_chioce <= len(li): print(li[num_of_chioce-1]) else:print('請輸入有效數字') elif num_of_chioce.upper() == 'Q': break else: print('請輸入數字')