python dict(字典)

補充知識點1:

數據類型的劃分:可變數據類型、不可變數據類型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'))  # 太白
View Code

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)  # 報錯
View Code

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'}
View Code

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)])
View Code

補充知識點2:分別賦值,也叫拆包

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
View Code

 

相關練習題:

若有下列物品: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), '輸入有誤,請從新輸入'))
View Code

 

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('請輸入數字')
View Code
相關文章
相關標籤/搜索