內建資料結構集合和字典

snji發表於2020-10-01

集合(無序不重複數列)

集合的建立

  • 使用大括號 { } 或者 set() 函式建立集合;
  • 注意:
    1. 建立一個空集合必須用 set() 而不是 { }
    2. { } 是用來建立一個空字典。
  • 示例:在這裡插入圖片描述

對集合內容的新增

  • add() 新增單個元素
  • update() 新增多個元素
  • 示例在這裡插入圖片描述

對集合的內容進行刪除

  • remove() 移除集合內的指定元素
  • pop() 隨機移除集合內的某個元素
  • clear() 移除集合中的所有元素
  • 示例:
    在這裡插入圖片描述
  • 對兩個集合求交集和並集
  • & 交集
  • | 並集
  • 示例  注:不支援重複和連線,也不支援索引和切片,支援成員操作符和for迴圈

字典(由多個key-value鍵值對組成的資料集)

特性:不支援重複和連線,也不支援索引和切片,支援成員操作符和for迴圈

字典的建立

  • 空字典 {}
  • 書寫格式
    {key1:value, key2:value2, …}
    字典生成式:d = {i:i.upper() for i in 'abcde'}
  • 示例在這裡插入圖片描述

對字典內容的更新或者新增

  • d[key]='value' 直接對字典裡的指定Key更新, 如果key不存在則會新增該鍵值對
  • update() 對字典中的多個鍵值對進行操作
  • 示例在這裡插入圖片描述

對字典內容的檢視

  • keys()檢視字典中所有的key值
  • values()檢視字典中所有的value值
  • items()檢視字典中所有的鍵值對
  • d['key']檢視字典中指定Key值對應的value值
  • 示例
    在這裡插入圖片描述

對字典內容刪除

  • pop(key) 對指定的key值刪除,會返回刪除的key值
  • clear() 將字典清空
  • 示例在這裡插入圖片描述

例項

  1. 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從大到小排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作(同一個測試用例裡可能會有多組資料,希望大家能正確處理)。

    程式碼:

    import random
    N = int(input('隨機生成數的個數:'))
    item = [random.randint(1, 1000) for i in range(N)]
    item = set(item)
    item = sorted(item)
    print(item[::-1]# 用切片的方法實現降序,也可以用sorted函式實現降序item = sorted(item, reverse=True)
    

    測試:在這裡插入圖片描述

  2. 寫一個函式wordcount統計一篇文章的每個單詞出現的次數(詞頻統計)。統計完成後,對該統計按單詞頻次進行排序。
    程式碼

     Word = input('WORD:')
    Word_sum = {}
    for i in Word.split():
        if i in Word_sum:
            Word_sum[i] += 1     # 通過key獲得對應的values
        else:
            Word_sum.update({i: 1})
    else:
        print(Word_sum)

    測試:
    在這裡插入圖片描述

相關文章