1、通過鍵的名稱返回值,類似列表的訪問a['name']
2、get(),指定鍵不存在時可以返回指定值
3、列出所有的鍵值對 a.items()
4、列出所有的鍵a.keys() ,列出所有的值a.values()
5、len()鍵值對的個數
6、檢測乙個鍵是否在字典中 in
>>> a=
>>> a['name']
'name'
>>> a.get('score')
70>>> a.len()
traceback (most recent call last):
file "", line 1, in attributeerror: 'dict' object has no attribute 'len'
>>> len(a)
2>>> a.items()
dict_items([('name', 'name'), ('score', 70)])
>>> a.keys()
dict_keys(['name', 'score'])
>>> a.values()
dict_values(['name', 70])
1、給字典新增鍵值對,如果鍵已存在會覆蓋
2、使用update()將新字典中所有鍵值對全部新增到舊字典中,如果value相同則覆蓋
3、字典中元素的刪除,可以使用del()方法,或者用clear()刪除所有的鍵值對,pop()刪除指定鍵值對並返回對應的值物件;
4、popitem()隨機刪除和返回該鍵值對,字典是無序可變序列,所以是彈出隨機項。
>>> a
>>> b=
>>> a.update(b)
>>> b
>>> a
>>> a.del('class')
file "", line 1
a.del('class')
^syntaxerror: invalid syntax
>>> del(a['class'])
>>> a
>>> a.pop('age')
10>>> a
>>> clear(a)
traceback (most recent call last):
file "", line 1, in nameerror: name 'clear' is not defined
>>> a.clear()
>>> a
{}
del()是系統自帶方法,update(),pop(),clear()都是dict的方法。
序列解包可以用於元組列表字典。序列解包可以讓我們方便的對多個物件賦值。
序列解包應用於字典時,預設是對鍵進行操作,如果對鍵值進行操作,需要使用items(),如果需要對值進行操作,則需要使用values()。
>>> s=
>>> a,b=s
>>> a,b
('name', '***')
>>> c,d=s.items()
>>> c,d
(('name', 'xiaoyang'), ('***', 'woman'))
>>> e,f=s.values()
>>> e,f
('xiaoyang', 'woman')
5.1儲存的底層過程
字典物件的核心是雜湊表,雜湊表是稀疏陣列(總有空白元素的陣列),陣列的每個單元叫做bucket,每個bucket由兩部分:乙個是鍵物件的引用,乙個是值物件的引用,由於所有bucket結構和大小一致,可以通過偏移量來讀取bucket。
每個字典在建立時有乙個預設大小,在儲存過程中,對要儲存的鍵先進行編碼,根據一定的規則去依次填充字典,如雜湊值的編碼,如果所在位置為空,則直接填充,如果所在位置不空,則依次選擇右旁邊的位置進行填充,直到找到空的bucket。
python會根據雜湊表的擁擠程度擴容,創造更大的陣列,將原有內容拷貝到新陣列,接近三分之二時,陣列就會擴容。
5.2根據鍵查詢鍵值對的底層過程
同樣的,也是先計算要找的鍵的雜湊值,然後去相應位置去查詢,如果不空,則進行一次比較,看所在位置的鍵物件的雜湊值是否相同,如果相同則返回鍵值對,不同則去旁邊繼續尋找,直到遍歷所有,然後返回空。
總結。字典在記憶體中開銷巨大,典型的空間換時間。鍵查詢速度很快,往字典中新增新鍵可能會導致擴容,導致雜湊中鍵的次序變化,因此不要在遍歷字典的時候進行字典的修改。
集合時無序可變的,元素不能重複,集合底層是字典實現,集合的所有元素是字典的鍵物件,因此是不能重複且唯一的。
6.1集合建立和刪除
1、使用{}建立集合物件,並使用add()新增元素
2、使用set()轉化為集合
3、remove()刪除指定元素,clear()清空整個集合
6.2集合相關操作
a|b 並集a.union(b)
a&b 交集a.intersection(b)
a-b差集a.difference(b)
**略略
選擇結構通過判斷條件是否成立,來決定執行哪個分支,分為單分支,雙分支,多分支。
在迴圈結構中,條件表示式的值為false的情況如下:false,0,空值none,空序列物件(空字串,空列表,空字典等),空range,空迭代物件。除此之外,均為true。
條件表示式中不能有賦值操作符『=』
三元條件運算子
條件為真時的值,if(條件表示式)else 條件為假時的值
print('bingo' if 10>9 else 'wrong')
選擇結構巢狀,選擇結構可以巢狀使用時一定要注意空值好不同級別**塊的縮排量。
while迴圈
while 條件表示式:
迴圈體語句
a=5
while a<10:
a+=1
print(a)
b=0c=0
while b<100:
c+=b
b+=1
print(c)
python第四天 基礎知識
start 計數從 start 開始。預設是從 0 開始。例如range 5 等價於range 0,5 stop 計數到 stop 結束,但不包括 stop。例如 range 0,5 是 0,1,2,3,4 沒有5 step 步長,預設為1。例如 range 0,5 等價於 range 0,5,1 ...
學習python 第四天
python 迴圈結構 迴圈結構可以輕鬆的控制某件事重複 再重複的發生。在python中構造迴圈結構有兩種做法,一種是for in迴圈,一種是while迴圈。for in迴圈 如果明確的知道迴圈執行的次數或者是要對乙個容器進行迭代 後面會講到 那麼我們推薦使用for in迴圈 用for迴圈實現1 1...
Python學習 第四天
map函式可以對序列中個每個值進行某種批量轉化操作,然後將結果作為迭代器iterator返回,迭代器可以利用for迴圈或者next 函式來訪問每個值。map函式接收兩個引數,乙個是函式f,乙個是iterator,map在iterable的每個元素上依次執行函式f,並把結果作為新的iterator迭代...