Python學習筆記2 字典

2022-06-25 11:45:10 字數 3211 閱讀 2507

除了列表,python中最常用的內建容器就是字典了,這是一種無序的鍵值對形式的物件集合。

這其中包含三層含義:

無序,即你不應該對字典資料的訪問順序抱有期待,其真是的訪問順序完全由python直譯器決定。

鍵值對,這在其它程式語言中也叫做關係陣列或者雜湊,其運用在實際開發中相當普遍,像json或者xml格式的資料都通常會用這種資料結構來處理。

物件集合,這意味著和列表一樣,可以包含任何形式的資料。

需要注意的是字典中的鍵是具有唯一性的。當然,如果值一般,字典的鍵也是物件,其是否唯一的判斷邏輯取決於物件對==運算子的過載處理,這在後續深入理解部分會提到。

在**中建立字典很簡單,如果你熟悉json資料的處理的話會頗為順手:

a =
如果你追求可讀性更強的寫法,可以這樣:

a =
與其它程式語言中的關係陣列操作類似,python中的字典操作同樣很簡單:

追加乙個元素:

a = 

a["career"] = "actor"

print(a)

輸出

刪除乙個元素:

a = 

a["career"] = "actor"

del a["age"]

print(a)

輸出

修改與追加寫法一致,不再贅述,訪問元素同理。

對佇列,我們可以用for/in的方式進行遍歷,對字典同樣可以:

a = 

a["career"] = "actor"

for column in a:

print(column)

輸出

name

agecareer

可以看到,用for/in的形式僅僅取到了key(鍵),而非value(值)。當然,我們可以進一步在迴圈體內通過a[column]的形式獲取value,但這並不方便。

我們看下在php中類似的關聯陣列是怎麼遍歷的:

<?php

$a = array(

"name" => "jack chen",

"age" => 16,

"career" => "actor"

);foreach ($a as $key => $value)

輸出

name: jack chen

age: 16

career: actor

在python中是不是可以這樣呢?答案是肯定的,不過寫法並不像php中那樣直觀:

a = 

for key, val in a.items():

print(key, ": ", val)

輸出

name : jack chen

age : 16

career : actor

如果上邊展示的那樣,通過呼叫.items()可以獲得乙個包括key和val的可遍歷物件,然後就可以在for中指定keyval

如前面所說,字典是個無序容器,所以不能對它的訪問順序有所期待,但有時候我們又需要順序訪問,怎麼做?

python提供內建的排序方法sorted,可以通過它或許乙個有序的字典拷貝,通過這個拷貝我們就可以進行順序讀取:

a = 

for key, val in sorted(a.items()):

print(key, ": ", val)

輸出

age : 16

career : actor

name : jack chen

需要強調的是,sorted()方法只是提供乙個有序拷貝,佇列本身依然是無序的。

我們可以借助其它容器控制對字典進行有序訪問:

a = 

asort = ["name", "career", "age"]

for key in asort:

print(key, ": ", a[key])

輸出

name : jack chen

career : actor

age : 16

在對字典這種資料結構日常使用過程中,我們經常會遇到以下這種情形:

a = list("hellow world!")

count = {}

for char in a:

if not char in count:

count[char] = 0

count[char] += 1

print(count)

輸出

這是乙個對字串進行詞頻統計的程式,其中在用字典統計詞頻的時候,需要對其動態初始化,即如果沒有相應的key就設定並初始化為0,如果不進行這一步,直接自增統計,就會報錯。

這樣做並沒有問題,而python對這種情況提供一種更方便的寫法:

a = list("hellow world!")

count = {}

for char in a:

count.setdefault(char, 0)

count[char] += 1

print(count)

這兩種寫法完全等效。

本來是要把元組和集合也放在這篇裡介紹的,不過因為為了對比php的**,去搭了乙個php的開發環境,折騰了好長時間,就分開發吧。

Python 學習筆記(612) 字典

在python中,字典資料型別的應用非常廣泛。基本知識 定義 字典是可變的無序集合,以鍵值對為基本元素可以儲存各種資料型別。格式 d1 len d1 2鍵 值設定約束 1.鍵的唯一性 a print a 2.鍵的不可變性 字典的基本方法 b a.copy 複製乙個字典生成乙個新的的字典 print ...

python基礎2 字典

alien 0 訪問字典中的值 alien 0 color 新增鍵值對 alien 0 x position 0,鍵值對的排列順序和新增順序沒有關係 建立乙個空字典 alien 0 修改字典中的值 alien 0 x position 2刪除鍵值對 del alien 0 color 遍歷鍵值 fo...

python學習筆記(四)字典

個人筆記,僅供參考 字典通過鍵值對來儲存資料,經常用來儲存有關聯的幾組資料。在需要處理較多資料時用的很頻繁 字典通過以下方式建立 phonebook 整個字典有大括號括起,一對鍵值對使用冒號連線,各個鍵值對之間用逗號分隔。可使用dict從其他對映 如其他字典 或鍵值對序列建立字典 items nam...