天天看點

python資料容器之集合、字典

set集合

基本文法:

# 定義集合字面量

(元素,元素,……元素)

# 定義集合變量

變量名稱 = (元素,元素,……元素)

# 定義空集合

變量名稱 = set()

清單使用 []

元組使用 ()

字元串使用 ""

集合使用 {}

集合的常用操作-修改

添加新元素

文法:集合.add(元素)

結果:集合本身被修改,添加了新元素

移除元素

文法:集合.remove(元素)

結果:集合本身被修改,移除了元素

從集合中随機取出元素

文法:集合.pop() 從集合中随機取出一個元素

結果:會得到一個元素的結果。同時集合本身被修改,元素被移除。

清空集合

文法:集合.clear()

取出2個集合的差集

文法:集合1.difference(集合2) 取出集合1和集合2的差集(集合1有而集合2沒有的)

結果:得到一個新集合,集合1和集合2不變

消除2個集合的差集

文法:集合1.difference_update(集合2)

功能:對比集合1和集合2,在集合1内,删除和集合2相同的元素

結果:集合1被修改,集合2不變

2個集合合并

文法:集合1.union(集合2)

功能:将集合1和集合2組合成新集合

結果:得到新集合,集合1和集合2不變

統計集合元素數量

文法:len(集合)

集合的特點:

  • 可以容納多個資料
  • 可以容納不同類型的資料
  • 資料是無序存儲的(不支援下标索引)
  • 不允許重複資料存在
  • 可以修改
  • 支援for循環

練習:資訊去重

有如下清單對象:

my_list=['暮霞如煙','念兮','程式員','念兮','程式員','python','best','beautiful','python']

請:

1.定義一個空集合

2.通過for循環周遊清單

3.在for循環中将清單的元素添加至集合

4.最終得到元素去重後的集合對象,并列印輸出

# 定義一個清單
my_list = ['暮霞如煙','念兮','程式員','念兮','程式員','python','best','beautiful','python']
print(f"清單:{my_list}")

# 定義一個空集合
my_set = set()
for element in my_list:
    my_set.add(element)

print(f"存入集合後結果:{my_set}")           

運作:

python資料容器之集合、字典

dict字典

# 定義字典字面量

{key: value, key:value, ……,key:value}

# 定義字典變量

my_dict = {key: value, key:value, ……,key:value}

# 定義空字典

my_dict = {} #方式1

my_dict = dict{} #方式2

字典資料的擷取

同集合一樣,不可以使用下标索引

文法:字典[key]可以取到對應的value

字典的key和value可以是任意資料類型(key不可為字典)

字典常用操作

新增元素

文法:字典[Key]=Value 結果:字典被修改,新增了元素

更新元素

文法:字典[Key]=Value 結果:字典被修改,元素被更新

注意:字典Key不可以重複,是以對已存在的Key執行上述操作,就是更新Value值

删除元素

文法:字典.pop(Key) 結果:獲得指定Key的Value,同時字典被修改,指定Key的資料被删除

清空字典

文法:字典.clear() 結果:字典被修改,元素被清空

擷取全部的Key

文法:字典.keys() 結果:得到字典中的全部Key

統計字典内元素數量

文法:len(字典)

練習:升職加薪

有如下員工資訊,請使用字典完成資料的記錄。

并通過for循環,對所有級别為1級的員工,級别上升1級,薪水增加1000元

姓名 部門 工資 級别
小蘭花 科技部 3000 1
東方青蒼 市場部 5000 2
長珩 市場部 7000 3
赤地女子 科技部 4000 1
榮昊 市場部 6000 2
# 用字典完成資料的記錄
staff_dict = {
    '小蘭花':{
        '部門':'科技部',
        '工資': 3000,
        '級别': 1
    },
    '東方青蒼':{
        '部門':'市場部',
        '工資': 5000,
        '級别': 2
    },
    '長珩':{
        '部門':'市場部',
        '工資': 7000,
        '級别': 3
    },
    '赤地女子':{
        '部門':'科技部',
        '工資': 4000,
        '級别': 1
    },
    '榮昊':{
        '部門':'市場部',
        '工資': 6000,
        '級别': 2
    }
}
print(f"全體員工目前資訊如下:{staff_dict}")

# for循環周遊字典
keys = staff_dict.keys()
for name in keys:
    level = staff_dict[name]['級别']
    if level == 1:
        # 升職加薪操作
        staff_dict[name]['級别'] = 2          #級别+1
        staff_dict[name]['工資'] += 1000      #工資+1000
print(f"全體員工級别為1的員工完成升值加薪操作,操作後:{staff_dict}")           

運作:

python資料容器之集合、字典

資料容器小總結

清單 元組 字元串 集合 字典
元素數量 支援多個 支援多個 支援多個 支援多個 支援多個
元素類型 任意 任意 僅字元 任意

Key:Value

Key:除字典外任意類型

Value:任意類型

下标索引 支援 支援 支援 不支援 不支援
重複元素 支援 支援 支援 不支援 不支援
可修改性 支援 不支援 不支援 支援 支援
資料有序
使用場景 可修改,可重複的一批資料記錄場景 不可記錄,可重複的一批資料記錄場景 一串字元的記錄場景 不可重複的資料記錄場景 以Key檢索Value的資料記錄場景

資料容器通用功能

周遊 通用for循環

len(容器) 元素個數

max(容器) 最大元素

min(容器) 最小元素

list(容器) 将給定容器轉換為清單

str(容器) 将給定容器轉換為字元串

tuple(容器) 将給定容器轉換為元組

set(容器) 将給定容器轉換為集合

sorted(容器,[reverse=True]) 将給定容器進行排序(reverse=True表示降序)