python之dic {字典}(重要指數*****)


1. 什么是字典

{'name': '汪峰', 'age': 18} '鍵':'值' 別的語言鍵值對數據
  • 鍵: 必須是可哈希(不可變的數據類型),並且是唯一的

  • 值: 任意

    可以保存任意類型的數據

  • 字典是無序的

    python3.6版本以上,默認定義了順序,python3.5以下是隨機顯示

  • 不能進⾏切片⼯作. 它只能通過key來獲取dict中的數據

  • 字典是可變的

2. 字典能干什么

  • 字典可以存儲大量數據,字典比列表還要大

  • 字典在查找值的時候很方便快速

  • 字典能夠將數據進行關聯

  • 有明確對應關系的時候推薦使用字典,字典一定要整明白,很重要

  • 目前所學的字典是不能轉換的

缺點:

  • 字典比較消耗內存 最常用的:字符串 列表 字典

3. 字典怎么用: 增、刪、改、查

3.1 增

方法一: 直接增
dic["鍵"] = "值"

例題:

dic['name'] = '汪峰'
dic['age'] = 18
print(dic) 
結果:
{'name': '汪峰', 'age': 18}
方法二:setdefault() 無則添加,有則不變
  • 先去字典查看要添加的鍵存不存在
  • 如果字典中存在就不添加,反之添加
dic.setdefault("鍵","值")

例題:

s1 = dic.setdefault('王菲')
# 輸出結果
# {'王菲': None}
dic.setdefault('a','aaa')
print(dic)
一句話總結
dic["鍵"] = "值"
dic.setdefault("鍵","值")  # 鍵不存在就添加,存在就不填加.

3.2 刪

沒有remove

方法一:pop('鍵') 通過鍵刪除,具有返回值,返回的是被刪除的值
pop("鍵")
方法二: del dic 刪除整個字典
del dic
方法三: del dic['鍵'] 刪除指定的鍵值對
del dic["鍵"]
方法四: dic.clear() 清空 刪除整個字典中的鍵值對
dic.clear() 
一句話總結
pop("鍵")
del dic["鍵"]
dic.clear()  清空

3.3 改

方法一: dic["鍵"] = "值" 直接改
dic["鍵"] = "值"

例題:

dic = {'a':'b','b':'c'}
dic['b'] = '這是新值' 有則改之無則添加
方法二: update({'鍵':值,'鍵':值})
  • update后面括號里面的級別高,會被前面的中相同的key對應的值覆蓋
  • 沒有的話會填加
dic.update({"a":1,"b":1})
一句話總結
dic["鍵"] = "值"
dic.update({"a":1,"b":1})

3.4 查

  • 字典的查詢只能通過鍵獲取值,不能通過值獲取鍵
方法一: get('鍵','可以自己指定內容') 不存在返回的是None獲取值的時候可以指定返回的內容,鍵不存在的時候不報錯

例題:

dic = {"a":1}
dic["a"] += 5 # 給鍵a的值加5
dic.get("a") # 獲取a的值
print(dic)
'''
輸出結果
{'a': 6}
'''
方法二: dic["鍵"] 獲取值的時候可以指定返回的內容,鍵不存在的時候就報錯

例題:

dic = {1:2,"a":"a1"}
print(dic["c"])
'''
輸出結果
報錯,沒有這個鍵
'''
方法三: dic.setdefault("鍵")

例題:

dic = {"a":1}
b = dic.setdefault('a')
print(b)
'''
輸出結果
1
'''
一句話總結

dic["鍵"]

get('鍵','可以自己指定內容')

dic.setdefault("鍵")

3.5 其他的方法

for循環-獲取字典的鍵的兩種方法
方法一:
for k in dic:
  print(k,dic[k]) #這里需要在打印的時候獲取k的值

例題:

dic = {1:2,"a":"a1"}
for i in dic:   # for循環字典的時候打印的是字典的鍵
    print(i,dic[i])
'''
輸出結果
1
a
'''
方法二:
for k in dic.keys():
  	print(k) # 這里在打印的時候不要指定

例題:

dic = {1:2,"a":"a1"}
for v in dic.keys():
    print(v)
'''
輸出結果
1
a
'''

三種模式:

dic.keys() -- 返回的是一個高仿列表 -- 沒有索引

dic.values() -- 返回的是一個高仿列表 -- 沒有索引

dic.items() -- 返回的是一個高仿列表,列表里存放的是元組類型元組第一個是鍵,第二個元素是值

3.6 解構

方法:

a,b = b,a    --- 交換的是指向
a,b = 1,2
a,b = (45,6)
a,b = [1,4]
a,b = {"s":1,"a":1}  # 字典拆包后的結果是鍵賦值給了a和b的變量

例題:

a = 1
b = 2
print("is a",id(a))
print("is b",id(b))
a,b = b,a
print("is a",id(a))
print("is b",id(b))

a,_,c = "你好啊"
print(a,c)
# 結果:你啊
a,b = ("1","2")
print(a,b)
# 結果:1,2
a,b = ["4","5"]
print(a,b)
# 結果:4,5
a,b = {"a":1,"b":2,}
print(a,b)
# 結果a b

3.7 enumerate() 枚舉

  • 給你要迭代對象,加一個序號 默認是從0開始,可以自己指定

例題:

li = [1,2,3,4,54]
for i,k in enumerate(li):  # enumerate 第二個參數默認不寫就是0    -- 枚舉
    print(i,k)
'''
輸出結果
0 1
1 2
2 3
3 4
4 54
'''

練習題:

題目: 有字典dic = {"電腦":15000,"手機":8000,"耳機":4000,"老婆":1111},現需求是顯示如下列表:
1 電腦
2 手機
3 耳機
4 老婆

方法一:
dic = {"電腦":15000,"手機":8000,"耳機":4000,"老婆":1111}
count = 1
for i in dic:
  print(count,i)
  count += 1

方法二:
for k,v in dic.enumerate(dic): # enumerate默認添加的序號從0開始,正好是索引的那個值
  print(k+1,v)
'''
輸出結果
1 電腦
2 手機
3 耳機
4 老婆
'''

3.8 字典的嵌套:

查找的字典的嵌套時,按照鍵去一層一層的查找

例題:

dic = {
    101:{1:["周傑倫","林俊傑"],2:{"汪峰":["國際章",{"前妻1":["熊大","熊二"]},
                                  {"前妻2":["葫蘆娃","木吒"]}]}},
    102:{1:["李小龍","吳京","李連傑"],2:{"謝霆鋒":["張柏芝","王菲"]},
         3:["alex","wusir","大象","奇奇"]},
    103:{1:["郭美美","干爹"],2:{"王寶強":{"馬蓉":"宋哲"}}},
    201:{1:["凹凸曼","皮卡丘"],2:{"朱懟懟":{"楊冪":"劉愷威"}}}
}

1. 找:葫蘆娃
print(dic[101][2]["汪峰"][2]["前妻2"][0])
2. 找:大象
print(dic[102][3][2])
3. 找:宋哲
print(dic[103][2]["王寶強"]["馬蓉"])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM