python一些基本知識點之字典(三)

2021-06-22 08:12:28 字數 2271 閱讀 8053

字典是python核心物件集合中的唯一的一種對映型別,也具有可變性----可以就地改變,並可以隨需求增大或減小,就像列表那樣。

建立字典方式1:

>>> d = 

>>> d['food']

'spam'

>>> d['quantity'] += 1

>>> d

>>>

方式2:開始乙個空字典,然後每次以乙個鍵來填充它。

如:描述某人記錄中的名字字段

>>> d = {}

>>> d['name'] = 'bob'

>>> d['job'] = 'dev'

>>> d['age'] = 40

>>> d

>>> print(d['name'])

bob

python巢狀的靈活性:

>>> rec = ,

'job':['dec','mgr'],

'age': 40.5}

>>> rec['name']

>>> rec['name']['last']

'smith'

>>> rec['job']

['dec', 'mgr']

>>> rec['job'][-1] #rec['job'][0]就是輸出第乙個工作dec

'mgr'

>>> rec['job']

['dec', 'mgr', 'janitor']

>>> rec

}>>>

字典中鍵的排序:for迴圈

作為對映,字典僅支援通過鍵獲取元素。

但是,在各種常見的應用場合,通過呼叫方法,我們也支援特定的操作。

因為字典不是序列,他們並不包含任何可靠的從左到右的序列。

我們問了按順序輸出,一般的辦法是,將鍵值按順序進行排序:

>>> d = 

>>> d

>>> ks = list(d.keys())

>>> ks

['a', 'c', 'b']

>>> ks.sort()

>>> ks

['a', 'b', 'c']

>>> for key in ks:

print(key,'=>',d[key])

('a', '=>', 1)

('b', '=>', 2)

('c', '=>', 3)

利用sorted內建函式可以一步完成。sorted呼叫返回結果並對個物件型別進行排序,

自動對字典的鍵排序:

>>> d

>>> for key in sorted(d):

print(key,'=>',d[key])

('a', '=>', 1)

('b', '=>', 2)

('c', '=>', 3)

>>>

迭代:

從左到右地掃瞄乙個物件的每個python工具都使用迭代協議。這就是為什麼上面介紹的sorted呼叫直接工作於字典之上,我們不必呼叫keys方法來得到乙個序列,因為字典是可迭代的物件,可以用乙個next返回後續的鍵。

如下使用了迭代協議:

>>> squares = [x ** 2 for x in [1,2,3,4,5]]

>>> squares

[1, 4, 9, 16, 25]

同上的功能

>>> squares =

>>> for x in [1,2,3,4,5]:

>>> squares

[1, 4, 9, 16, 25]

>>>

在字典中,我們有可能訪問不存在的鍵值,這樣的話會報錯,我們怎麼樣避免這種情況呢?

可以使用if語句判斷鍵值是否存在;

>>> d = 

>>> d

>>> d['d'] = 99

>>> d

>>> d['f']

traceback (most recent call last):

file "", line 1, in d['f']

keyerror: 'f'

>>> 'f' in d

false

>>> if not 'f' in d:

print('missing')

missing

python一些知識點

程式設計中遇到的一些python小知識點總結 1.python中的itertools可以實現排列組合 2.陣列的交集並集差集 輸入的是str,如果要得到int 型別,需要轉換 3,有時候老是會print 之後,出現at 0x000000000257e828 情況,而不是我想要的資料 比如陣列 b i...

基本知識點

1 程序和執行緒的關係 1 在有執行緒的作業系統裡面,程序是分配資源的基本單位,執行緒是排程的基本單位。2 1個程序可以擁有多個執行緒 3 執行緒同時也有一些自己的資源,包括 程式計數器,堆疊等 4 因為執行緒所擁有的資源比較少,因此進行排程的時候所消耗的資源就少。5 執行緒共享程序的 段,程序的一...

基本知識點

dram 動態隨機訪問儲存器 dynamic random access memory 隨機訪問的意思是,訪問任何乙個記憶體單元的速度和它的位置 位址 無關,讀寫位址0x00001和0xffff0所需要的事件是一樣的。rom 唯讀儲存器 read only memory 它的內容是預先寫入的,掉電也...