除了列表,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)
輸出在python中是不是可以這樣呢?答案是肯定的,不過寫法並不像php中那樣直觀:name: jack chen
age: 16
career: actor
a =
for key, val in a.items():
print(key, ": ", val)
輸出如果上邊展示的那樣,通過呼叫name : jack chen
age : 16
career : actor
.items()
可以獲得乙個包括key和val的可遍歷物件,然後就可以在for
中指定key
和val
。
如前面所說,字典是個無序容器,所以不能對它的訪問順序有所期待,但有時候我們又需要順序訪問,怎麼做?
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...