python第五天:字典的增刪改查,字典的嵌套
數據類型劃分:可變數據類型, 不可變數據類型
不可變數據類型: 元祖 bool str int 可哈希
可變數據類型: list dict set 不可哈希
dict key:必須是可哈希數據類型
dict value:任意數據類型
dict 優點:用二分查找去查詢
存儲大量的關係型數據
特點: 無序的
''' #dict #數據類型劃分:可變數據類型, 不可變數據類型 不可變數據類型: 元祖 bool str int 可哈希 可變數據類型: list dict set 不可哈希 dict key:必須是可哈希數據類型 dict value:任意數據類型 dict 優點:用二分查找去查詢 存儲大量的關係型數據 特點: 無序的 dic = { 'name': ['大猛', '小夢'], 'py9': [{'num': 71, 'avg_age': 18,}, {'num': 71, 'avg_age': 18,}, {'num': 71, 'avg_age': 18,}, ], True:1, (1, 2, 3): 'wuyiyi', 2: '二哥', } print(dic) dic1 = {'age': 18, 'name': 'jin','sex': 'male',} #增: dic1['height'] = 185 #沒有鍵值對,添加 dic1['age'] = 19 #有鍵值對覆蓋 dic1.setdefault('weight')#有鍵值對不做任何的改變,沒有才添加 dic1.setdefault('weight', 150) dic1.setdefault('name','二哥') #刪 print(dic1.pop('age')) #有返回值,按鍵去刪除 print(dic1.pop('二逼', None)) #可設置返回值 print(dic1.popitem()) #隨機刪除 有返回值 元組裏面是刪除的鍵值 del dic1['name1'] del dic1 dic1.clear() #清空詞典 #改 update dic1['age'] = 16 dic = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic.update(dic2) print(dic) ''' #查 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',} print(dic1.keys()) print(dic1.values()) print(dic1.items()) for i in dic1.keys(): print(i) for i in dic1.values(): print(i) for i in dic1.items(): print(i) v1 = dic1['name'] print(v1) v2 = dic1['name2']#沒有就跑錯 print(v2) dic1.get('name1',None)#這個get可以設置返回值
dict的嵌套:
dic = { 'name': ['alex', 'wusir', 'taibai'], 'py9': { 'time': '1213', 'learn_money':19800, 'addr': 'CBD', }, 'age':21, } dic['age'] = 56 print(dic['name']) dic['name'].append('日天') l = [1, 2, 'wusir'] l[2] = l[2].upper() dic['name'][1] = dic['name'][1].upper() print(dic) dic['py9']['female'] = 6 print(dic) # fhdklah123rfdj12fdjsl3 數出數字有幾個123為一個整體 info = input('<<<').strip() for i in info: if i.isalpha(): info = info.replace(i, '') l = info.split() print(len(i))
HW:
''' #1.有如下變量(tu是個元祖), 請實現要求的功能 tu = ('alex', [11, 22, {'k1': 'v1', 'k2': ['age','number'],'k3': (11, 22, 33)}, 44]) #a.講述元祖的特性 #a.元祖是只可查數據類型,為不可變量數據類型 簡稱可hash #b.請問tu變量中的第一個元素'alex'是否可被修改 #‘alex'是字符串不可變量數據類型不可以修改 #c.請問tu變量中的'k2'對應的值是什麽類型?是否可以被修改?如果可以,請在其中添加一個元素'seven; #'k2'對應的值是list是可變量數據類型 可以被修改 tu[1][2]['k2'].append('seven') #d.請問tu變量中的'k3'對應的值是什麽類型?是否可以被修改?如果可以,請在其中添加一個元素'seven; #’k3'對應的值是元祖 不可以被修改 #2.字典dic,dic={'k1': 'v1', 'k2': 'v2', 'k3': [11,22,33]} #a.請循環輸出所有的key dic={'k1': 'v1', 'k2': 'v2', 'k3': [11,22,33]} for i in dic.keys(): print(i) #b.請循環輸出所有的value for i in dic.values(): print(i) #c.請循環輸出所有的key 和 value for i in dic.items(): print(i) #d.清在字典中添加一個鍵值對,"k4":"v4",輸出添加后的字典 dic['k4'] = 'v4' print(dic) #e.請修改字典中'k1'對應的值為'alex',輸出修改後的字典 dic['k1'] = 'alex' print(dic) #f.請在'k3'對應的值中追加一個元素44,輸出修改後的字典 dic['k3'].append(44) print(dic) #g.請在'k3'對應的值的第一個位置插入一個元素18, 輸出修改後的字典 dic['k3'].insert(0,18) print(dic) #3.元素分類 #有如下值li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90],將所有大於66的值保持至字典的第一個key中,將小於66的值保存至字典的第二個key中 #即:{‘k1':大於66的所有值列表,'k2'小於66的所有值列表} li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] dic = {} l_greater = [] #大於66的列表 l_lesser = []#小於66的列表 for i in li: if i > 66: l_greater.append(i) elif i<66: l_lesser.append(i) else: pass dic.setdefault('k1',l_greater) dic.setdefault('k2',l_lesser) print(dic) ''' #4.輸出商品列表,用戶輸入序號,顯示用戶選中的商品 #商品li = ['手機', '電腦', '鼠標墊', '游艇'] #要求:1:頁面顯示 序號+商品名稱, 如: # 1 手機 # 2 電腦 # .... # 2:用戶輸入選擇的商品序號,然後打印商品名稱 # 3:如果用戶輸入的商品序號有無,則提升輸入錯誤,並重新輸入 # 4:用戶輸入'Q'或'q',推出程序 while 1: li = ['手機', '電腦', '鼠標墊', '游艇'] for i in li: print(li.index(i) + 1, i) l = input('請輸入商品的序列號/輸入Q或q退出程序') if l.isdigit(): l = int(l) if l > 0 and l <= len(li): print(li[l-1]) elif l.upper() == 'Q': break else: print('請輸入有效數字') else: print('請輸入數字')