Dict

字典

字典是python中惟一的映射類型,採用鍵值對(key-value)的形式存儲數據,查詢速度快。python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,因此字典是無序存儲的,且key必須是可哈希的。python

可哈希表示key必須是不可變類型,如:數字、字符串、元組。git

字典(dictionary)是除列表意外python之中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對象集合。二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。數據結構

數據類型分類:
可變數據類型(不可哈希):list,dict,set。
不可變數據類型(可哈希):int,bool,str,tuple.
字典的鍵:不可變數據類型。
字典的值:任意數據類型。
容器類型:
  容器類(承載各類數據類型):list,tuple,dict。.
字典的鍵是惟一的。
字典的順序:
  3.5以前,字典是無序的。
  3.6開始,字典建立的時候,按照必定的順序插入的數值,看起來是有序的。app

字典的方法

dic = {"name":"jin",
       "age":18,
       "sex":"male",}

# 字典的增
# 第一種:有則覆蓋,無則增長
dic['hobby'] = 'girl'
print(dic)
# 第二種:有則不變,無則增長
dic.setdefault('hobby') # 無value時默認爲None
dic.setdefault('hobby', 'girl')

# 字典的刪 
dic.pop(key, None)  # 有返回值,爲刪除的value,無則報錯
dic.popitem() # 隨機刪除,有返回值
dic.clear() # 清楚字典
del dic[key] # 刪除字典或按key刪除

# 字典的改
dic['name'] = 'alex'
print(dic)

dic2 = {"name":"alex","weight":75}
dic.updata(dic2) # 將dic2迭代添加並覆蓋dic裏已有的

# 字典的查
print(dic['name']) # 無則報錯

print(dic.get('name'))#無則返回None(能夠自定義返回內容)
# 其餘方法
dic = {"name":"jin",
       "age":18,
       "sex":"male"}

print(dic.keys())
dict_keys(['name', 'age', 'sex'])

print(dic.values())
dict_values(['jin', 18, 'male'])

dic.keys()和dic.vaues()能夠for循環裏面的元素
for i in dic = for i in dic.keys()
li = list(dic.keys()) # 變成列表


print(dic.items())
dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
for k, v in dic.items():
    print(k, v)

概念:分別賦值函數

a = 4
 b = 5
 a, b = b, a
 print(a,b)spa

字典的嵌套

dic = {"name_list":['張三','lisi','隔壁王叔叔'],
          'dic2':{'name':'太白','age':12}
         }   
# 1 ,給列表追加一個元素:'旺旺'
dic['name_list'].append('旺旺')
print(dic)

#,2,給列表lisi所有大寫
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)

#3,給dic2 對應的字典添加一個鍵值對:hobby:girl
dic['dic2']['hobby'] = 'girl'
print(dic) 

 課後做業

# 四、有字符串"k:1|k1:2|k2:3|k3:4" 處理成字典 {'k':1,'k1':2....}
s = 'k:1|k1:2|k2:3|k3:4'
dic = {}
s = s.split('|')
for i in s:
    i = i.split(':')
    dic[i[0]] = i[1]
print(dic)

五、元素分類code

    有以下值li= [11,22,33,44,55,66,77,88,99,90],將全部大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的值中。對象

即: {'k1': 大於66的全部值列表, 'k2': 小於66的全部值列表}blog

 

li= [11,22,33,44,55,66,77,88,99,90]
dic = {}
dic['k1'] = []
dic['k2'] = []
for i in li:
    if i >= 66:
        dic['k1'].append(i)
    else:
        dic['k2'].append(i)
print(dic)

 

六、輸出商品列表,用戶輸入序號,顯示用戶選中的商品ip

    商品 li = ["手機", "電腦", '鼠標墊', '遊艇']

要求:1:頁面顯示 序號 商品名稱,如:

       1 手機

     2 電腦

       …

      2 用戶輸入選擇的商品序號,而後打印商品名稱

      3:若是用戶輸入的商品序號有誤,則提示輸入有誤,並從新輸入。

    4:用戶輸入Q或者q,退出程序。

 

li = ["手機", "電腦", '鼠標墊', '遊艇']
shopping_cart = []
for i, name in enumerate(li, 1):
    print(i, name)
while True:
    choice = input('請選擇商品序號:').strip()
    if choice.upper() == 'Q':
        print('----------您已購買如下商品----------')
        for k in shopping_cart:
            print(k)
        break
    if choice.isdigit() and int(choice) <= len(li):
        choice = int(choice)
        shopping_cart.append(li[choice-1])
        print(li[choice-1])
    else:
        print('您輸入有誤,請從新輸入!')
相關文章
相關標籤/搜索