Python模塊-collections

来源:https://www.cnblogs.com/nirvanaInSilence/archive/2019/09/07/11482595.html
-Advertisement-
Play Games

tuple(元組)功能: 不可變,但是元組內數組可以修改(不建議) 可迭代 格式 your_tuple=("name1","name2",1,……) 拆包 a,b,c=your_tuple 或者 a,*b=your_tuple(a取值第一個,剩餘賦值給b) a=your_tuple[i](只獲取第i ...


tuple(元組)功能:

  不可變,但是元組內數組可以修改(不建議)

  可迭代

  格式 your_tuple=("name1","name2",1,……)

  拆包 a,b,c=your_tuple 或者 a,*b=your_tuple(a取值第一個,剩餘賦值給b) a=your_tuple[i](只獲取第i個)

tuple比較list:

  不可變,性能優化(在編譯時確定,速度差異),線程安全,可以當做dict(字典)的key

nametuple功能(數據處理較為常用):

  新建nametuple: class_name=namedtuple("class_name",["name1","name2","name3"])  new_obj=class_name(name1="a",name2="b",name3="c")(初始化)

    -等於class class_name:def _init_(a,b,c):pass

  your_tuple=(a,b,c)  new_tuple=class_name(*your_tuple)

題外:函數參數形式:*a(未指定輸入參數全部放入單星號內,形式元組) **a(將指定輸入參數名保存到雙星號內,字典形式)。mysqlclient、pymsql取出的數據都為tuple

  new_tuple=class_name._make(your_tuple)(可以是字典、元組、數組,不需要星號。但是數量一定要對上,無法添加新屬性)

  new_info_dict=new_tuple._asdict()(轉化為OrderedDict)

defaultdict功能(c語言實現):

  name1,name2,name3分別出現次數

user_dict={}

users=["name1","name2","name3","name1"]  

for user in users:

    user_dict.setdefault(user,0)   #值不存在時,預設0

    user_dict[user]+=1

或者

/*default_dict=defaultdict(list)(可調用對象,list空,int0等等)

default_dict["name"]    #name不存在時調用list

pass*/

users=["name1","name2","name3","name1"]  

for user in users:

    default_dict[user]+=1

pass

字典套用字典

def get_default():

  return {

    "name":"",

    "nums":0

  }

default_dict=defaultdict(get_default)

default_dict["group1"]

pass

deque功能(雙端隊列,c語言實現,儘量保存相同類型數據):

from collections import deque

 

/*user_list=["name1","name2"]

user_name=user_list.pop()  #取末端數據併在列表中刪除*/

user_list=deque(["name1","name2"]) #可迭代對象,數組元組字典都可以,字典key值作為參數

/*append()尾部插入appendleft()插入頭部前copy()(淺拷貝)數據相同但id(存儲位置)不同,若內可變元素(eg:list)則都指向同一元素eg:[1,2]更改為[1,2,3]則copy前後兩數據都變化,若不可變元素則另一個數據不變。deepcopy(深拷貝)可變元素改變後另一元素不變。a.extend(b)將b拼接到a後面,只更改當前元素(a),並不返回一個新元素。.insert(i,"a")在i位置插入a,其後順延,並不是更改當前元素。.reverse()反轉*/

 

deque線程安全,list非線程安全

Counter功能(統計):

users=["name1","name2","name2","name3","name1",]

user_counter=Counter(users)/*可以是字典數組元組字元串*/

user_counter.update("")  #更新增加後再統計數據

user_counter.most_common(i)#前i個出現次數最多的

OrderedDict功能:

from collections import OrderedDict

 

user_dict=OrderedDict()

user_dict["a"]='name1'

user_dict["b"]='name2'

user_dict["c"]='name3'

 #有序性,先添加在前面後添加在後面

user_dict.popitem()#彈出預設最後的元素,不需要key值

user_dict.move_to_end("a")#將a元素移到最後

ChainMap功能:

from collections import ChainMap

user_dict1={"a":"name1","b":"name2"}

user_dict2={"c":"name2","d":"name3"}

new_dict=ChainMap(user_dict1,user_dict2)#將user_dict1,dict2連接起來,如果遍歷時有多個相同key值,只顯示第一個

 new_dict.maps#列表形式展示數據

new_dict.maps[i]["a"]="newname"#將第i個元素key為a的value更改為newname

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 0907自我總結 重新整理django中Auth模塊 一.設置 預設Auth表單 預設是使用自帶的 表單 自定義Auth表單 一定要在 中告訴 ,我現在使用我新定義的 表來做用戶認證。寫法如下: 在 創建表單模型可以對 進行繼承因為我們可以從源碼中看出來auth自帶的user表示繼承 類,所有我們可 ...
  • 一、函數名 ​ 函數名是⼀個變數, 但它是⼀個特殊的變數, 與括弧配合可以執⾏函數的變數。 1. 函數名的記憶體地址 2. 函數名可以賦值給其他變數 3. 函數名可以當做函數的參數 4. 函數名可以作為函數的返回值 二、閉包 1. 定義 ​ 如果在一個內部函數里,對在外部作用於(但不是在全局作用域)的 ...
  • Struts中的標簽可分為2類: 通用|普通標簽 包括流程式控制制標簽、數據訪問標簽 UI標簽 包括表單標簽、非表單標簽 Struts2中的標簽均帶有首碼s。 常用的流程式控制制標簽 1、if-elseif-else標簽 條件判斷 test指定條件,滿足條件時,顯示標簽體的內容。 2、iterator標簽 ...
  • 周末手擼管理系統(一) 已完成 大體模板 用戶登入註冊 明天加商品訂單商品進去 完成效果圖 1.首先進行設置 2.創建模型以及form組件 userinfo_form.py 3.頁面 4.路由 5.視圖 `大家周末娛樂` ...
  • 線性表,即線性存儲結構,將具有“一對一”關係的數據“線性”地存儲到物理空間中,這種存儲結構就稱為線性存儲結構,簡稱線性表。 註意:使用線性表存儲的數據,要求數據類型必須一致,線性表存儲的數據,要麼全不都是整形,要麼全部都是字元串。一半是整形,另一半是字元串的一組數據無法使用線性表存儲。 線性表存儲數 ...
  • "《Docker遠程連接設置》" 一文講述了開啟Docker遠程連接的方法,但那種方法不安全,因為任何客戶端都可以通過Docker服務的IP地址連接上去,今天我們就來學習Docker官方推薦的安全的遠程連接方式:TLS加密連接,通過證書來保證安全性。 官方文檔 這裡是官方的權威文檔:https:// ...
  • PHP字元串 字元串格式化 字元串截斷: trim(): 刪除字元串首尾位置的(回車、換行、製表符)字元,並返回結果字元串 同時,trim()參數也可以設置自定義的特殊字元過濾列表 rtrim(): 刪除字元串首部位置開始的特殊字元 ltrim(): 刪除字元串尾部位置開始的特殊字元 chop(): ...
  • 寫在前面 最近工作中遇到兩例mysql時間戳相關的問題,一個是mysql connector java和msyql的精度不一致導致數據查不到;另一例是應用伺服器時區錯誤導致數據查詢不到。通過這篇文章,希望能夠解答關於mysql中時間戳的幾個問題: 1. mysql中的DATETIME精度為什麼只支持 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...