資料結構 字典和集合

2021-08-21 13:02:43 字數 3455 閱讀 6198

- 以鍵值對儲存的資料形式

- 字典原理: 將key關鍵字作為自變數,通過雜湊函式計算出乙個整數值,即為該元素的儲存位址

- 犧牲空間來節省時間

- 如果位址出現衝突,鏈結發 / 開放定址式(python)

字典名 =

字典名 = dict(key = value)

# 此處key是字串,不需要加引號,只代表關鍵字

# 只適用於key為字串的字典建立

字典名 = dict(zip(iteral1, iteral2))

字典名.fromkeys(iteral, [default = none])

# 返回新建立的字典,字典名來自iteral, 字典值同一為default

# 方法一:

>>> a =

# 方法二:

>>> a = dict(age = 12, 性別 = '男')

>>> a

# 方法三:

>>> m = range(1, 5)

>>> n = ('a', '@', 3)

>>> dict(zip(m,n))

>>> dict(zip(n, m))

# 方法四:

>>> a =

>>> a.fromkeys(a, [23,'ed'])

>>> a.fromkeys(a.values(), [23,'ed'])

字典名[字典鍵值] = 字典值

--- 如果有,更新;沒有,新增

# 方法一:

>>> a =

>>> a['sa'] = 234

>>> a

# 方法二(支援新增和查詢,不支援修改):

>>> a =

# 沒有key,則新增鍵值對

>>> a.setdefault(34, 's')

's'>>> a

# 如果已有key,不修改value

>>> a.setdefault(2, 's')

3>>> a

# 方法三:

# 有則改,無則添

>>> a =

>>> b =

>>> a.update(b)

>>> a

不支援+   *  >

支援==  in, is

① .fromkeys(seq)

建立同值不同鍵的字典

② setdefault(key, value)

- 用於給字典追加鍵值對,如果沒有value,

追加key-none鍵值對

key不存在,追加key-value;

已經存在,不可變value;

③ update((key, default=none)

- 追加字典,對已有key更新,沒有追加鍵值對,適用於多個   

① pop(key)

- 刪除指定鍵值對,返回key對應value

② popitem()

- 隨機刪除鍵值對,返回被刪除的鍵值對

③ clear

清空字典

get(key, '錯誤資訊')

- 返回value, 如果key不存在,返回指定資訊

- 所有物件的拷貝都是淺拷貝

返回迭代器

(1) .keys()

(2) .values()

(3) .items()        

eg.

# 冒號生成字典

>>>

# 不加冒號生成集合

>>>

>>>

- value為none的字典

(1)    集合名 =

(2)    集合名 = set(iterator)

#  空集合建立

集合名 = {}          --- 空字典

集合名 = set()     --- 空集合

(1) 集合元素不重複

(2) 無序

(3) 元素為不可變型別

(1) 無 * + 

有 in is == >(父子集判斷)

(2) 差集(-),並集(|),交集(&),相對差集(^)

s1 =

s2 =

① 差集 --- 在被減數集合但是不在減數集合

>>> s1 - s2

>>> s2 - s1

②並集    --- 合併去重複

>>> s1 | s2

③交集 --- 同時出現

>>> s1 & s2

④相對差集 --- 不同時出現

>>> s1 ^ s2

(3) 父子集判斷( < 、 >)

- 是否存在包含關係

.add(element)

① .remove(element)

有則原地刪除,無則報錯

② .discard(element)

若有則刪除,不存在不報錯

③ .pop()

隨機刪除乙個元素,並返回

.copy()

淺拷貝,物件不是原來的物件,和元組型別不一樣

s1 =

s2 =

① 差集 - difference

>>> s1.difference(s2)

# 帶有'_update'代表原地修改

>>> s1.difference_update(s2)

>>> s1

②    交集 - intersection

>>> s1.intersection(s2)

③    並集 - union

>>> s1.union(s2)

>>> s1.update()

>>> s1

④    相對差集 - symmetric_difference

>>> s1.symmetric_difference(s2)

⑤    .isdisjoint()

- 判斷交集是否為空    

⑥     .issubset()

- 判斷是否子集        

⑦    .issupperset()

- 判斷是否父集

只能通過遍歷獲得元素,不支援索引

> 其他轉字典,使用dict關鍵字方法, dict(a =1, b =2, c=3)

> 字串、列表、元組轉集合,會去除重合元素

如果含有可變型別,則不能朱哪壺·轉化為集合

資料結構 字典和集合

以鍵值對儲存的資料形式 字典原理 將key關鍵字作為自變數,通過雜湊函式計算出乙個整數值,即為該元素的儲存位址 犧牲空間來節省時間 如果位址出現衝突,鏈結發 開放定址式 python 字典名 字典名 dict key value 此處key是字串,不需要加引號,只代表關鍵字 只適用於key為字串的字...

內建資料結構集合和字典

特性 不支援重複和連線,也不支援索引和切片,支援成員操作符和for迴圈 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從大...

JS 資料結構,集合 字典

集合通常由一組無序的,不能重複的元素構成。集合比較常見的實現方式是雜湊表。可以將集合看做特殊的陣列。特殊之處在於裡面的元素沒有順序,也不能重複。沒有順序意味著不能通過下標值進行訪問,不能重複意味著相同的物件在集合中只能存在乙份。學習集合,可以自己封裝乙個集合類。在 js 中,2011年6月發布的 e...