Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對(duì)象和類

Python 日期和時(shí)間

Python 高級(jí)知識(shí)

Python 參考手冊(cè)

Python 字典(Dictionary)

在本文中,您將學(xué)習(xí)關(guān)于Python dictionary的所有內(nèi)容;如何創(chuàng)建、訪問、添加和刪除元素,以及各種內(nèi)置方法。

Python中的字典是什么?

Python字典是一個(gè)無序的項(xiàng)集合。其他復(fù)合數(shù)據(jù)類型只有值作為元素,而字典有一個(gè)鍵:值對(duì)(key:value)。

字典被優(yōu)化以在鍵已知時(shí)檢索值。

如何創(chuàng)建字典?

創(chuàng)建字典就像將項(xiàng)目放在用逗號(hào)分隔的大括號(hào){}中一樣簡(jiǎn)單。

一個(gè)項(xiàng)目具有一個(gè)鍵和對(duì)應(yīng)的值,表示為一對(duì),鍵:值。

盡管值可以是任何數(shù)據(jù)類型并且可以重復(fù),但是鍵必須是不可變的類型(具有不可變?cè)氐?a href="python-string.html" title="Python字符串">字符串,數(shù)字元組)并且必須是唯一的。

# 空字典
my_dict = {}

# 帶有整數(shù)鍵的字典
my_dict = {1: 'apple', 2: 'ball'}

# 混合鍵字典
my_dict = {'name': 'John', 1: [2, 4, 3]}

# 使用 dict()
my_dict = dict({1:'apple', 2:'ball'})

# 將每個(gè)項(xiàng)作為一對(duì)的序列
my_dict = dict([(1,'apple'), (2,'ball')])

如您在上面看到的,我們還可以使用內(nèi)置函數(shù)dict()創(chuàng)建字典。

如何從字典中訪問元素?

雖然索引與其他容器類型一起使用來訪問值,但是字典使用鍵。鍵可以在方括號(hào)內(nèi)或與get()方法一起使用。

使用get()的區(qū)別在于,如果沒有找到密鑰,它將返回None,而不是KeyError。

運(yùn)行該程序時(shí),輸出為:

Jack
26

如何更改或添加字典中的元素?

字典是可變的。我們可以使用賦值運(yùn)算符添加新項(xiàng)目或更改現(xiàn)有項(xiàng)目的值。

如果鍵已經(jīng)存在,則值將更新,否則將新鍵:值對(duì)添加到字典中。

運(yùn)行該程序時(shí),輸出為:

{'name': 'Jack', 'age': 27}
{'name': 'Jack', 'age': 27, 'address': 'Downtown'}

如何從字典中刪除或刪除元素?

我們可以使用pop()方法刪除字典中的特定項(xiàng)目。此方法使用提供的鍵作為項(xiàng)移除,并返回值。

方法popitem()可用于從字典中刪除并返回任意項(xiàng)(鍵,值)。使用clear()方法可以一次刪除所有項(xiàng)目。

我們還可以使用del關(guān)鍵字刪除單個(gè)項(xiàng)目或整個(gè)字典本身。

運(yùn)行該程序時(shí),輸出為:

16
{1: 1, 2: 4, 3: 9, 5: 25}
(1, 1)
{2: 4, 3: 9, 5: 25}
{2: 4, 3: 9}
{}

Python字典方法

以下列出了詞典可用的方法。在上面的示例中已經(jīng)使用了其中一些。

Python字典方法
方法描述
clear()從字典中刪除所有項(xiàng)目。
copy()返回字典的淺表副本。
fromkeys(seq[,v])用于創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,v為字典所有鍵對(duì)應(yīng)的初始值。
get(key[,d])

返回鍵的值。 如果key不存在,則返回d(默認(rèn)為None)。

items()返回可遍歷的(鍵, 值) 元組數(shù)組。
keys()返回字典中的所有的鍵。
pop(key[,d])刪除帶鍵的項(xiàng)并返回其值,如果沒有找到key,則返回d。如果沒有提供d,并且沒有找到key,則引發(fā)KeyError錯(cuò)誤
popitem()刪除并返回任意項(xiàng)(鍵,值)。如果字典為空則引發(fā)KeyError。
setdefault(key[,d])返回指定鍵的值,如果指定鍵的值不在字典中,返回指定值,默認(rèn)為 None。
update([other])使用來自other的鍵/值對(duì)更新字典,覆蓋現(xiàn)有鍵。
values()以列表形式返回字典中的所有值。

以下是使用這些方法的一些示例。

marks = {}.fromkeys(['Math','English','Science'], 0)

# 輸出: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)

for item in marks.items():
    print(item)

# 輸出: ['English', 'Math', 'Science']
list(sorted(marks.keys()))

Python 字典理解

字典理解是從Python中的迭代器創(chuàng)建新字典的一種優(yōu)雅簡(jiǎn)潔的方法。

字典理解包含一個(gè)表達(dá)式對(duì)(鍵:值),后跟花括號(hào){}中的for語句。

這是制作字典的示例,其中每個(gè)項(xiàng)目都是一對(duì)數(shù)字及其平方。

squares = {x: x*x for x in range(6)}

# 輸出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
print(squares)

此代碼等效于

squares = {}
for x in range(6):
   squares[x] = x*x

字典理解可以選擇包含更多forif語句。

可選if語句可以過濾出項(xiàng)以形成新字典。

這是一些僅包含奇數(shù)項(xiàng)目的字典示例。

odd_squares = {x: x*x for x in range(11) if x%2 == 1}

# 輸出: {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
print(odd_squares)

要了解更多信息,請(qǐng)?jiān)L問Python字典理解

其他詞典操作

字典成員資格測(cè)試

我們可以使用關(guān)鍵字來測(cè)試鍵是否在字典中in。請(qǐng)注意,成員資格測(cè)試僅適用于鍵,而不適用于值。

squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

# 輸出: True
print(1 in squares)

# 輸出: True
print(2 not in squares)

# 僅對(duì)鍵而不是值進(jìn)行成員資格測(cè)試
# 輸出: False
print(49 in squares)

遍歷字典

使用for循環(huán),我們可以遍歷字典中的每個(gè)鍵。

squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
    print(squares[i])

內(nèi)置字典函數(shù)

內(nèi)置函數(shù)如all()、any()、len()、cmp()、sort()等通常與dictionary一起用于執(zhí)行不同的任務(wù)。

內(nèi)置字典函數(shù)
功能描述
all()

如果字典的所有鍵都為true(或者字典為空),則返回True。

any()

如果字典的任何鍵為true,則返回True。 如果字典為空,則返回False。

len()返回字典中的長(zhǎng)度(項(xiàng)目數(shù))。
cmp()比較兩個(gè)字典的項(xiàng)目。
sorted()返回字典中新排序的鍵列表。

以下是一些使用內(nèi)置函數(shù)來處理字典的示例。

squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

# 輸出: 5
print(len(squares))

# 輸出: [1, 3, 5, 7, 9]
print(sorted(squares))
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清