day15 集合與字典

2022-08-23 12:54:12 字數 3057 閱讀 2036

一、字典(dict)

1. 概述

字典是python唯一的對映型別。

只能使用不可變的物件(比如字串)來作為字典的鍵,但是可以把不可變或可變的物件作為字典的值。

鍵值對在字典中以這樣的方式標記:d = key1 : value1, key2 : value2 。注意它們的鍵/值對用冒號分割,而各個對用逗號分割,

所有這些都包括在花括號中。

字典中的鍵/值對是沒有順序的。

字典是 dict 類的例項/物件。

2. 建立與訪問

直接通過花括號括起來鍵/值對來建立。可以這樣來建立空字典。字典可以索引,只不過索引值是鍵值。

利用內建函式 dict() 來建立字典,注意整個函式只有乙個引數,如下:

dict3 = dict((('f',70), ('i',105), ('h',115), ('c',67))),只要能讓它找到對映關係就ok。

還可以指定關鍵字引數來建立字典:

dict4 = dict(turing = '讓程式設計改變世界'),注意此時鍵即 turing 不能加引號,會報錯。

對於字典還可以通過鍵來修改值,如果存在這個鍵,就會修改其值,如果根本不存在這個鍵,就會再新增乙個鍵/值對。如:

dict4[『 turing 』] = 『 大家一起來程式設計』

dict4[' edison '] = ' 大發明家'

>>>dict4

。3. 字典的內建方法

1) fromkeys()

>>> dict1 = {}

>>> dict1.fromkeys((1,2,3))

>>> dict1.fromkeys((1,2,3), 'number')

>>> dict1.fromkeys((1,2,3),('one','two','three'))

>>>dict1.fromkeys((1,3),'數字')

fromkeys方法用來建立乙個字典,有兩個引數,乙個是鍵,乙個是值。注意第二個引數都會賦給所有的鍵,沒有聰明的一一對應。

沒有辦法通過這個辦法修改鍵的值,強制修改的話會建立乙個新的字典。

2)keys() values() items()

分別遍歷鍵、值、項。

3)get()

當索引並不是字典中的鍵時,訪問輸出時會出錯,用get()方法可以巧妙的解決這個問題。

>>> print(dict2[31])

>> print(dict2[32])

traceback (most recent call last):

file "", line 1, in

print(dict2[32])

keyerror: 32

>>> dict2.get(32)

>>> print(dict2.get(32))

none

>>> dict2.get(32,'木有')

'木有'

>>> dict2.get(31,'木有')

'贊'4)clear()

清空字典。如果直接把想要清空的字典賦給空字典,和clear()方法還是有很多不同的,有時候可能有威脅,還是使用clear()方法。

>>> dict2.clear()

>>> dict2

{}>>> dict2 = {}

>>> a =

>>> b = a

>>> b

>>> a = {}

>>> b

>>> a = b

>>> a

>>> b

>>> a.clear()

>>> a

{}>>> b

{}5)copy()

淺拷貝,和賦值操作的不同看**:

>>> a =

>>> b = a.copy()

>>> c = a

>>> c

>>> a

>>> b

>>> id(a)

57877832

>>> id(b)

57838536

>>> id(c)

57877832

6) pop() 與 popitem()

乙個是彈出值,乙個是彈出項,後者是隨機彈出的。

>>> a.pop(2)

'two'

>>> a

>>> a.popitem()

(1, 'one')

7) setdefault()

新增鍵或新增鍵/值對。如:

(注:新增後的順序隨機)

>>> a.setdefault('sq')

>>> a

>>> a.setdefault(5,'five')

>>> a

update()

用字典來更新字典,如果引數字典中的鍵原字典有就更新其值,沒有就自動新增上去新鍵。

二、集合(set)

1. 概述

集合是字典的「表親」,花括號不只是字典的特權。當用花括號括起來一堆沒有對映關係的元素時就建立了乙個集合。

>>> num2 =

>>> type(num2)

2. 和數學中的概念一樣,集合具有互異性,無序性(因此集合無法用於索引)。

>>> num=

>>> num

>>> num[2]

traceback (most recent call last):

file "", line 1, in

num[2]

typeerror: 'set' object does not support indexing

3. 內建工廠函式 set() 可以用來建立集合,引數可以是列表,元組,甚至是字串。

>>> set1 = set([1,2,3, 4,5])

>>> set1

4. 因為集合的互異性,反而給序列中去除相同的元素提供了乙個巧妙的方法。

list2 = list(set(list1))

缺點是無法保證和原序列同樣的順序,慎用。

5. 集合的內建方法 add() remove()

建立不可變集合的函式 frozenset().

6. 其他常見集合內建方法總結

Java 集合框架(一) day15

student arr new student 5 儲存學生物件 arr 0 new student 張三 23 arr 1 new student 李四 24 arr 2 new student 王五 25 arr 3 new student 趙六 26 arr 4 new student 馬哥 ...

python筆記3 集合與字典

無序不重複元素的序列。可以使用大括號 或者 set 函式建立集合。注意 建立乙個空集合必須用set 而不是 是用來建立乙個空字典。usr bin python3 student print student 輸出集合,重複的元素被自動去掉 成員測試 if rose in student print r...

python4 集合與字典

2.字典的定義 3.字典的特性 集合 set 是乙個無序的不重複元素序列,多應用於去重。案例 s print s,type s s type s 錯誤方法 s 字典不是集合 s set type s 正確方法 s set 字典 無序的擁有key value鍵值對的資料型別,不支援索引 切片 重複 連...