零基礎入手!Python中字典與集合的使用指南

2020-12-15 讀芯術

全文共5092字,預計學習時長10分鐘

本文將介紹Python的內置集合模塊,用於支持集合和鍵值對等數學概念。

一、什麼是集合?

集合是一組用於儲存唯一值的序列。

初始化

可使用花括號{}定義集合。

>>> numSet = {1, 2, 3, 4, 5}

>>> print(numSet)

{1, 2, 3, 4, 5}

若在初始化中鍵入重複值,則只保留一個元素。

>>> numSet = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5}

>>> print(numSet)

{1, 2, 3, 4, 5}

也可使用內置的 set函數進行空集初始化。

>>> emptySet = set()

>>> print(emptySet)

set()

注意:集合元素是不可更改的,在集合中加入可變對象會報錯。

>>> tuple1 = (1, 2, 3)

>>> tuple2 = (4, 5, 6)

>>> tupleSet = {tuple1, tuple2} # no error as tuples are immutable

>>> print(tupleSet)

{(4, 5, 6), (1, 2, 3)}

>>> list1 = [1, 2, 3]

>>> list2 = [4, 5, 6]

>>> listSet = {list1, list2} #will raise error as lists are mutable

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

加入元素

使用內置 add函數向集合中加入元素。

>>> numSet = {1, 2, 3, 4, 5}

>>> numSet.add(6)

>>> print(numSet)

{1, 2, 3, 4, 5, 6}

注意:在集合中加入重複元素是無效的,此情況下也不會報錯。

>>> numSet = {1, 2, 3, 4, 5}

>>> numSet.add(5)

>>> print(numSet)

{1, 2, 3, 4, 5}

刪除元素

使用內置remove函數刪除集合中元素。

>>> numSet = {1, 2, 3, 4, 5}

>>> numSet.remove(5)

>>> print(numSet)

{1, 2, 3, 4}

注意:刪除集合中不存在的元素不會報錯。

>>> numSet = {1, 2, 3, 4, 5}

>>> numSet.remove(99)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 99

集合長度

使用內置len函數查找集合長度。

>>> numSet = {1, 2, 3, 4, 5}

>>> len(numSet)

5

查找

使用in運算符查找集合中元素。

>>> numSet = {1, 2, 3, 4, 5}

>>> 2 in numSet

True

>>> 99 in numSet

False

接下來介紹如何執行集合操作。

交集

使用 &運算符尋找兩個集合的交集。

>>> setA = {1, 2, 3, 4, 5}

>>> setB = {3, 4, 5, 6, 7}

>>> intersection = setA & setB

>>> print(intersection)

{3, 4, 5}

併集

使用|運算符將兩個集合合併。

>>> setA = {1, 2, 3, 4, 5}

>>> setB = {3, 4, 5, 6, 7}

>>> union = setA | setB

>>> print(union)

{1, 2, 3, 4, 5, 6, 7}

補集

補集返回值為僅在第一個集合中出現的值。

使用-運算符尋找補集。

>>> setA = {1, 2, 3, 4, 5}

>>> setB = {3, 4, 5, 6, 7}

>>> difference = setA - setB

>>> print(difference)

{1, 2}

>>> reverseDifference = setB - setA

>>> print(reverseDifference)

{6, 7}

集合對稱差

對稱差返回值是由只屬於兩個集合中任一集合,而非全部集合的元素組成的集合。

使用 ^ 運算符尋找兩個集合的對稱差。

>>> setA = {1, 2, 3, 4, 5}

>>> setB = {3, 4, 5, 6, 7}

>>> symmDiff = setA ^ setB

>>> print(symmDiff)

{1, 2, 6, 7}

檢查超集

若集合A含有集合B中所有元素,則集合A為集合B的超集。

使用>=運算符檢驗左側集合是否為右側集合的超集。

>>> bigSet = {1, 2, 3, 4, 5}

>>> smallSet = {3, 4}

>>> isSuperSet = bigSet >= smallSet

>>> print(isSuperSet)

True

使用<= 運算符檢驗右側集合是否為左側集合的超集。

>>> bigSet = {1, 2, 3, 4, 5}

>>> smallSet = {3, 4}

>>> isSuperSet = smallSet <= bigSet

>>> print(isSuperSet)

True

二、如何使用字典?

在Python中,字典用於儲存鍵值對。

初始化

同樣可以使用花括號{}初始化字典,並使用key :value 語法聲明鍵值對。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3}

也可使用內置dict函數初始化空字典。

>>> emptyDict = dict()

>>> print(emptyDict)

{}

還可直接使用空花括號{}初始化空字典。

>>> emptyDict = {}

>>> print(emptyDict)

{}

注意:不可改變字典中的鍵。嘗試使用可變鍵創建字典會報錯。

>>> tupleA = (1, 2, 3) # tuples are immutable

>>> stringA = "I love Python!" # strings are immutable

>>> floatA = 3.14 # float values are immutable

>>> dictA = {tupleA : True, stringA : False, floatA : True} # no error as all keys are immutable

>>> print(dictA)

{(1, 2, 3): True, 'I love Python!': False, 3.14: True}

>>> listB = [1, 2, 3] #list is mutable

>>> dictB = {listB : True} # raises an error as lists are mutable

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

獲取數據

使用方括號([])從字典中獲取鍵值。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> JohnsNumber = nameToNumber["John"]

>>> print(JohnsNumber)

1

注意:尋找不存在的鍵會報錯。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> nameToNumber["Sam"]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 'Sam'

為避免報錯,可以使用內置 get函數。使用該函數尋找不存在的鍵返回值為None,但不會報錯。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> johnsNumber = nameToNumber.get("John")

>>> print(johnsNumber)

1

>>> samsNumber = nameToNumber.get("Sam"

>>> print(samsNumber)

None

若字典中缺少鍵,則可以使用get 函數返回默認值。將所需的默認值作為第二個參數傳遞給get 函數。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> johnsNumber = nameToNumber.get("John", 99)

>>> print(johnsNumber)

1

>>> samsNumber = nameToNumber.get("Sam", 99)

>>> print(samsNumber)

99

修改數據

使用內置setdefault 函數將數據插入字典。

只有在字典中不存在該鍵時,setdefault才會在字典中創建新鍵值對。若該鍵存在,也不會被覆蓋。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> nameToNumber.setdefault("Sam", 4)

4

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3, 'Sam': 4}

>>> nameToNumber.setdefault("Sam", 99) # no changes as the key already exists

4

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3, 'Sam': 4}

使用內置update函數修改字典中現存值。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> nameToNumber.update({"Sam" : 4}) # creates new entry

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3, 'Sam': 4}

>>> nameToNumber.update({"Sam" : 99}) # updates existing entry

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3, 'Sam': 99}

也可使用方括號修改現存值。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> nameToNumber["Sam"] = 4 # creates new entry

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3, 'Sam': 4}

>>> nameToNumber["Sam"] = 99 # updates existing entry

>>> print(nameToNumber)

{'John': 1, 'Harry': 2, 'Jacob': 3, 'Sam': 99}

刪除數據

使用 del命令刪除字典中的鍵。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> del nameToNumber["John"]

>>> print(nameToNumber)

{'Harry': 2, 'Jacob': 3}

注意:刪除不存在的鍵會報錯。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> del nameToNumber["Sam"]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 'Sam'

迭代

使用內置keys功能在字典中的鍵上進行迭代。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> names = list(nameToNumber.keys()) # using list() to store in a list

>>> print(names)

['John', 'Harry', 'Jacob']

可以使用內置的values函數迭代字典中的值。

>>> nameToNumber = {"John" : 1, "Harry" : 2, "Jacob" : 3}

>>> values = list(nameToNumber.values())

>>> print(values)

[1, 2, 3]

留言 點讚 關注

我們一起分享AI學習與發展的乾貨

如需轉載,請後臺留言,遵守轉載規範

相關焦點

  • Python的集合與字典
    可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。創建格式:parame = {value01,value02,...}
  • 零基礎學習Python字典操作
    Python字典操作在 Python 中,字典是一種可以將相關的兩個信息關聯起來的操作,並且字典可存儲的信息量幾乎不受限制,下面一起來跟小編學習一下如何訪問和使用字典中的信息吧!dict1 = {'name':'Jame','age':15}print(dict1)使用字典在 Python 中,字典是一系列鍵-值對,每個鍵都與一個值相關聯,我們可以通過鍵來訪問與之相關聯的值,與鍵相關聯的值可以是數字、字符串、列表、字典、或者任何 python 對象。
  • python中集合set的使用場景概述
    在python中,集合set具有字典key的特點,其元素無序且唯一,可以通過大括號{}或者函數set來創建,用法如下>>> a = set((1, 2, 3))>>> a{1, 2, 3}>>> type(a)<class 'set'>>&
  • python字典
    在python中你可以使用鍵來訪問與之相關聯的值。與之關聯的值可能是數字、字符串、列表乃至字典。事實上,可將任何python對象用作字典中的值2、刪除字典 Del列如:del alien{'color'}3、可以使用一個for循環來遍歷字典列如:user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',}
  • 零基礎學習 Python 之 for 循環語句
    寫在之前大家好,這裡是零基礎學習 Python 系列,在這裡我將從最基本的Python 寫起,然後再慢慢涉及到高階以及具體應用方面。print(name[i])... rocky我在之前的文章中講過的諸如字符串,列表,元組,字典和集合等都可以用類似於上面的方式來循環,這裡因為字典稍微特殊一點,我在這裡說一下,其餘的如果有興趣可以自行嘗試。
  • Python 集合是什麼,為什麼應該使用以及如何使用? | Linux 中國
    這些結構包括列表、字典、元組和集合。根據 Python 3 文檔:集合是一個無序集合,沒有重複元素。基本用途包括成員測試和消除重複的條目。集合對象還支持數學運算,如併集、交集、差集和對等差分。在本文中,我們將回顧並查看上述定義中列出的每個要素的示例。讓我們馬上開始,看看如何創建它。
  • python數據結構總結——集合
    python中,列表和元組都是序列的一種,它們的基本特徵,最大區別在於,列表是可變的,而元組則是不可變的。python中還有另外一種序列,叫做集合。python集合集合也是一種序列。它的特點是可變,但是無法通過索引操作。因為集合中的元素是無序的。當試圖通過索引進行操作時,會提示TypeError,類型錯誤。集合中的元素還是不可重複的。當嘗試向一個集合中,添加多個重複元素時,重複元素只會存在一個。
  • python中namedtuple與OrderedDict 的使用
    今天來講解一下python中的 Namedtuple與OrderedDict 的使用。一、Namedtuple我們都知道,在python的數據結構裡,tuple(元組)表示的是不可變集合。', ['x', 'y'])p = Point(1, 2)p.xp.y如果用坐標和半徑表示一個圓,也可以用nametuple來定義:#namedtuple('名稱', [屬性list]):Circle = namedtuple('Circle', ['x', 'y', 'r'])Namedtuple,可以讓我們不必通過索引值進行訪問,我們可以把它看作為一個字典通過名字進行訪問
  • 零基礎學習python,這幾本書少不了
    目前,社會上已經掀起了一波學習python的熱潮,但是很多人由於並沒有python基礎,不知道從哪裡開始學習,小編今天整理了零基礎學習python的一些書籍,希望對大家有所幫助。1.《"笨辦法"學Python》推薦理由:本書是一本python入門書籍,比較適合沒有計算機、編程基礎,但是對python感興趣的小白學習使用。這本書是以習題的方式一步一步引導讀者了解、學習python,從簡單的列印一直講到完整項目的實踐,讓初學者從基礎的python知識入手,最終體驗到軟體開發的基本過程。
  • python新知識 字典視圖
    python新知識   字典視圖從bug中學習:字典返回的居然是視圖bug與之前相同,我在試圖從dataframe和series中提取值
  • python:if語句和字典
    python根據條件測試的值是Ture還是False來決定是否執行if語句中的代碼。如果條件測試的值為True,python就執行緊跟在if語句後面的代碼,如果為False,就忽略這些代碼。#6.1一個簡單的字典player = {"name":"alice","age":"23","gender":"male"}print(player["name"]) #訪問字典print(player["age"])#6.2使用字典'''在Python中,字典是一系列鍵-值對。
  • 零基礎開始用Python處理Excel數據
    1.1 什麼是python?1.3 手把手教你安裝python程序1.3.1 下載python1.3.2 安裝python1.3.3 驗證是否安裝成功1.4 安裝Python集成開發工具PyCharm7.10 實例應用(統計各日期的銷售數據)7.11 字典的循環7.11.1 普通循環7.11.2 字典在列表中的推導7.11.3 字典推導式7.12 實例應用(統計各省各公司總業績)
  • 【python速查系列】字典系列使用速查--刪除字典元素
    c = a.pop('addr')print('字典元素(pop)後的字典為:', a, ', 刪除的內容是:', c)d = a.popitem()print('字典元素(popitem)後的字典為:', a, ', 刪除的數據為:',d)結果為:
  • Python字典裡的5個黑魔法
    ': 3, 'b': 2}最後要提醒一下:OrderedDict()雖然是好東西,但是它內部維護了一個雙向鍊表,若數據量很大的話,會非常消耗內存.(良好的代碼,一定是要考慮健壯性,切記)因為試圖通過索引的方式去取值,比如dict[key],當key不是字典dict的鍵,會引起異常,有沒有什麼兩全的辦法有值的時候取值,沒有值的時候即使我取不到也不會發生異常答案是有的,python早就給你準備好了.我們用dict.get()
  • 初學者使用Python的一些基礎知識(了解變量,集合,循環等信息)
    索引演示串聯:我們可以使用plus(+)符號在python中連接兩個字符串。簡單設置用法與其他集合類型類似,我們可以添加,刪除和更新集合中的數據:4)字典>與其他字典相比,字典是一種不同的收藏類型。基本字典用法我們可以使用分別稱為keys()和的兩個唯一函數來獲得字典中的所有鍵或值values():
  • 【Python 第37課】 字典
  • Python安裝教程和使用技巧
    有豐富的數據結構,例如列表、字典、集合等。具有可移植性,支持面向過程和面向對象編程,並且開源。window系統中,python有多種開發工具,例如1.直接在cmd命令窗口執行,但此種僅能單條語句執行,不能運行完整的程序。2.python自帶的集成開發環境,可通過開始——所有程序——python3.3——IDLE(Python GUI)啟動。
  • 【python速查系列】字典系列使用速查--創建字典
    直接創建字典這個是最直接的方法,就是在變量定義的時候,直接通過標識符{}來定義字典。
  • python教程第10課:python字典之dictionary
    Python裡面另一種數據類型叫做dictionary, 裡面可以存放任意數據類型,包括整數型、字符串、集合、元祖等Dictionary英文解釋叫字典,他是使用key-value這種鍵值對的方式來存儲數據的,key就類似字典裡面的索引,value就是字典裡面索引對應的值,所以我們從dictionary裡面查詢數據,實際上速度也是挺快的
  • 瘋狂的Python字典
    這個子字典是從哪裡來的?當python處理我們的字典表達式時,它首先構造一個新的空字典對象; 然後按照字典表達式給出的順序賦鍵和值。我第一次看到這個字典表達式真的讓我難住了。在python文檔中進行一些探索之後,我發現python將bool作為了int類型的一個子類。