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('請輸入數字')

 

posted @ 2018-12-27 08:01  初级实习程序员  阅读(129)  评论(0编辑  收藏  举报