1. 程式人生 > >python學習基礎篇——字典

python學習基礎篇——字典

log 容器 數據 都是 添加 目錄 cnblogs false seq

? 什麽是字典

字典是另一種可變容器模型,且可存儲任意類型對象。

字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

鍵必須是唯一的,但值則不必。

值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組,如果出現相同的鍵則前面鍵的值會被後面鍵的值所覆蓋

dict = {姓名: chenshifeng, 愛好: (Python,java), city: 杭州,number:666}

如何訪問字典裏的值

通過key訪問value,也可以直接打印出所有的key—value

技術分享

? 修改字典

向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對,此方法簡單粗暴,如下實例:

dict = {姓名: chenshifeng, 愛好: (Python,java), city: 杭州,number:666}
dict[number] = 888   # 更新 Age
print(dict)
dict[age] = 18      # 添加信息
print(dict)

結果為

{姓名: chenshifeng, 愛好: (Python, 
java), city: 杭州, number: 888} {姓名: chenshifeng, 愛好: (Python, java), city: 杭州, number: 888, age: 18}

? 刪除字典元素

能刪單一的元素也能清空字典

dict = {姓名: chenshifeng, 愛好: (Python,java), city: 杭州,number:666}
del dict[city] # 刪除鍵 ‘city‘
print(dict)
dict.clear()     # 清空字典數據
print
(dict) del dict # 刪除字典 print(dict)

技術分享

? 字典鍵的特性

1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住

技術分享

2)鍵必須不可變,所以可以用數字,字符串或元組充當,而用列表就不行

dict = {(name,englishname):[塵世風,chenshifeng]}
print(dict)
dict1 = {[name,englishname]:[塵世風,chenshifeng]}
print(dict1)

第一個正確,第二個會報錯,結果如下

Traceback (most recent call last):
{(name, englishname): [塵世風, chenshifeng]}
  File "E:/Pythoncode/PythonAutomation/day2/test1.py", line 39, in <module>
    dict1 = {[name,englishname]:[塵世風,chenshifeng]}
TypeError: unhashable type: list

? 字典內置函數&方法

Python字典包含了以下內置函數:

1)len(dict) :計算字典元素個數,即鍵的總數。

技術分享

2)str(dict) :輸出字典,以可打印的字符串表示。

技術分享

3)type(variable) :返回輸入的變量類型,如果變量是字典就返回字典類型。

技術分享

Python字典包含了以下內置方法:

1)radiansdict.clear() :刪除字典內所有元素

技術分享

2)radiansdict.copy() :返回一個字典的淺復制

 所謂淺拷貝是指:深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,還是引用

dict1 = {姓名: 塵世風, 愛好: [Python,java,C++], city: 杭州,number:666}
dict2 = dict1          # 淺拷貝: 引用對象
dict3 = dict1.copy()   # 淺拷貝:深拷貝父對象(一級目錄),子對象(二級目錄)不拷貝,還是引用
# 修改數據
dict1[姓名] = chenshifeng
dict1[愛好].remove(C++)
# 輸出結果
print(dict1)
print(dict2)
print(dict3)

實例中 dict2 其實是 dict1 的引用(別名),所以輸出結果都是一致的,dict3 父對象進行了深拷貝,不會隨dict1 修改而修改,子對象是淺拷貝所以隨 dict1 的修改而修改

{姓名: chenshifeng, 愛好: [Python, java], city: 杭州, number: 666}
{姓名: chenshifeng, 愛好: [Python, java], city: 杭州, number: 666}
{姓名: 塵世風, 愛好: [Python, java], city: 杭州, number: 666}

3)radiansdict.fromkeys(seq,value) :創建一個新字典,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值

seq = (name, age, sex)

dict = dict.fromkeys(seq)
print ("新的字典為 : %s" %  str(dict))

dict = dict.fromkeys(seq, 10)
print ("新的字典為 : %s" %  str(dict))

結果為

新的字典為 : {name: None, age: None, sex: None}
新的字典為 : {name: 10, age: 10, sex: 10}

4)dict.get(key, default=None) :返回指定鍵的值,如果值不在字典中返回default值

dict = {name: chenshifeng, age: 18}

print ("age 值為 : %s" %  dict.get(age))
print ("sex 值為 : %s" %  dict.get(sex, "NA"))

以上實例輸出結果為:

age 值為 : 18
sex 值為 : NA

5)key in dict :如果鍵在字典dict裏返回true,否則返回false

dict = {name: chenshifeng, age: 18}

# 檢測鍵 Age 是否存在
if  age in dict:
    print("鍵 age 存在")
else :
    print("鍵 age 不存在")

# 檢測鍵 Sex 是否存在
if  sex in dict:
    print("鍵 sex 存在")
else :
    print("鍵 sex 不存在")

以上實例輸出結果為:

鍵 age 存在
鍵 sex 不存在

6)radiansdict.items() :以列表返回可遍歷的(鍵, 值) 元組數組

dict = {name: chenshifeng, age: 18}

print(dict.items())

以上實例輸出結果為:

dict_items([(name, chenshifeng), (age, 18)])

7)radiansdict.keys() :以列表返回一個字典所有的鍵

dict = {name: chenshifeng, age: 18}

print(dict.keys())

以上實例輸出結果為:

dict_keys([name, age])

8)radiansdict.setdefault(key, default=None) :和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default

dict = {name: chenshifeng, age: 18}

print ("age 鍵的值為 : %s" %  dict.setdefault(age, None))
print ("sex 鍵的值為 : %s" %  dict.setdefault(sex, None))
print ("新字典為:", dict)

以上實例輸出結果為:

age 鍵的值為 : 18
sex 鍵的值為 : None
新字典為: {name: chenshifeng, age: 18, sex: None}

9)radiansdict.update(dict2) :把字典dict2的鍵/值對更新到dict裏

dict = {name: chenshifeng, age: 18}
dict2 = {sex: man}

dict.update(dict2)
print ("更新字典 dict : ", dict)

以上實例輸出結果為:

更新字典 dict :  {name: chenshifeng, age: 18, sex: man}

10)radiansdict.values() :以列表返回字典中的所有值

dict = {name: chenshifeng, age: 18,sex: man}
print(dict.values())
print ("字典所有值為 : ",  list(dict.values()))

以上實例輸出結果為:

dict_values([chenshifeng, 18, man])
字典所有值為 :  [chenshifeng, 18, man]

11)pop(key[,default]) : 刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。

dict = {name: chenshifeng, age: 18,sex: man}
pop_obj=dict.pop(sex)
print (pop_obj)
print (dict)

以上實例輸出結果為:

man
{name: chenshifeng, age: 18}

12) popitem() : 隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對)

dict = {name: chenshifeng, age: 18,sex: man}
pop_obj=dict.popitem()
print (pop_obj)
print(dict)

以上實例輸出結果為:

(sex, man)
{name: chenshifeng, age: 18}

python學習基礎篇——字典