Python基礎入門—字典dict

字典

  • 字典是一種可變數據類型
  • 點典的元素存儲方式是鍵值對的形式,鍵值對之間用逗號隔開
  • 鍵值對的形式形如:key:value
  • 最外層用{}括起來
  • d = {key1 : value1, key2 : value2 }
  • 因爲字典是鍵值對的形式,因此字典是無序的,天然不能切片和索引,而是經過鍵來取值

鍵:通常是惟一的,若是重複最後的一個鍵值對會替換前面的,值不須要惟一
值:能夠取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組python

字典的定義

  1. dict()來建立
a = dict([('a',1),('b',2),('c',3)])
a 
type(a)

{'a':1,'b':2,'c':3}
dict
  1. 直接賦值{}
b = {'a':1,'b':2,'c':3}
b
type(b)

{'a':1,'b':2,'c':3}
dict

字典對象增長元素

  1. dict[鍵名] = 值
c = {'a':1,'b':2,'c':3}
c['e'] = 4
e

{'a':1,'b':2,'c':3,'e':4}
  1. dict.setdefault(’新鍵名‘,值)
d = {'a':1,'b':2,'c':3}
d.setdefault('e',4)
d

{'a':1,'b':2,'c':3,'e':4}
  1. dict1.update(dict2)
    相似列表extend()

字典對象元素刪除

經常使用的5種方法code

del 字典名['鍵名'] 刪除指定鍵值
字典名.pop('鍵名') 刪除鍵值+彈出值
字典名.popitem() 隨機刪除一對(通常最後一對)+彈出
字典名.clear() 刪除詞典內全部元素(和列表對應操做相同)
del 字典名 刪除整個詞典(和列表對應操做相同)

Examples:htm

scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
scores.clear()
scores 

{}
scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
del scores['Mike']
scores

{'Tom': 89, 'Mary': 95, 'Jack': 95}

字典對象的修改

字典名[鍵] = 新值對象

字典對象元素的查找

字典名['鍵名'] 返回改鍵所對應的值
字典名.get('鍵名') 返回改鍵所對應的值
字典名.keys() 返回包含全部鍵的列表
字典名.values() 返回包含全部值的列表
字典名.items() 返回全部包含鍵值對的列表

Examples:blog

scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
scores.get('Mary')

95
scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
scores.items()

dict_items([("Mike":88),("Tom":89),("Mary":95),("Jack":95)])

字典的深淺拷貝

  1. 淺拷貝
    兩個字典的內存地址不一樣,但內部元素指向同一內容空間

Examples:索引

a = {'a':1, 'b':(1, 2), 'c':[1, 2, 3], 'd':(1, 2, {1:1}), 'e':{1, 2, 3}}
b = copy(a)
id(a)
id(b)

82254800
82254224 # 不一樣電腦運行結果不一樣,但a,b兩個字典的id不一樣

[id(x) for x in a]
[id(x) for x in b]
[30713928, 30712248, 30378392, 30622024, 30621968]
[30713928, 30712248, 30378392, 30622024, 30621968]  
# 內部的item的id 是同樣的  說明內部的元素指向同一個值
  1. 深拷貝內存

    Examples:字符串

    from copy import deepcopy
    c = deepcopy(a)
    id(a)
    id(c)
    
    82254800
    82201408 # 不一樣電腦運行結果不一樣,但a,c兩個字典的id不一樣
    
    [id(a[x]) for x in a] 
    [id(c[x]) for x in c]
    [8791153438464, 77829320, 79350664, 79322712, 79516840]
    [8791153438464, 77829320, 82216968, 82251848, 79517288]
    # 內部的item的id 是同樣的  說明內部的元素指向同一個值

    結果發現可變類型的id發生了變化,具體總結可參考Python基礎入門—列表list相關內容get

相關文章
相關標籤/搜索