python的字典及相關操作

来源:https://www.cnblogs.com/codingchen/archive/2022/04/12/16138273.html
-Advertisement-
Play Games

一、什麼是字典 字典是Python中最強大的數據類型之一,也是Python語言中唯一的映射類型。映射類型對象里哈希值(鍵,key)和指向的對象(值,value)是一對多的的關係,通常被認為是可變的哈希表,字典對象是可變的,它是一個容器類型,能存儲任意個數的Python對象,其中也可包括其他容器類型。 ...


一、什麼是字典

字典是Python中最強大的數據類型之一,也是Python語言中唯一的映射類型。映射類型對象里哈希值(鍵,key)和指向的對象(值,value)是一對多的的關係,通常被認為是可變的哈希表,字典對象是可變的,它是一個容器類型,能存儲任意個數的Python對象,其中也可包括其他容器類型。

字典類型與序列類型的區別:
1.存取和訪問數據的方式不同。
2.序列類型只用數字類型的鍵(從序列的開始按數值順序索引);
3.映射類型可以用其他對象類型作鍵(如:數字、字元串、元組,一般用字元串作鍵),和序列類型的鍵不同,映射類型的鍵直
4.接或間接地和存儲數據值相關聯。
5.映射類型中的數據是無序排列的,這和序列類型是不一樣的,序列類型是以數值序排列的。
6.映射類型用鍵直接“映射”到值。

總之,Python中字典是一系列"鍵-值"對,每個鍵都與一個值關聯,可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字元串、列表乃至字典。事實上,可將任何Python對象用作字典中的值。

一個簡單字典的示例:

student_A ={'name':'Allen','age':'14','grade':'8'} # 定義一個字典
print(student_A['name'])
print(student_A['age'])
print(student_A['grade'])

new_names = student_A['name']
new_ages = student_A ['age']
new_grades= student_A ['grade']
print("The student_A's name is " + new_names.title()+ ",and she is "+str(new_ages) +" years old,and Grade "+str(new_grades))
其中,student_A={'name':'Allen','age':'14','grade':'8'}  定義了一個名為student_A的字典,該字典中有三個關鍵字'name','age'和'grade',對應的值分別為'Allen','14'和'8'
student_A['name'] 表示引用的是student_A['name']的值,即Allen,也就是語句:new_names = student_A['name'] 和new_names='Allen'是一樣的。

一、創建一個字典
1)如上述代碼,直接定義一個字典,student_A ={'name':'Allen','age':'14','grade':'8'},列出各關鍵字和對應的值;
2)先使用一對花括弧定義一個字典,再分行添加各個分鍵值對:
student_B={}
student_B['name']='Jack'
student_B['age']=13
student_B['grade']=7

二、在原有字典上添加“鍵-值”對:由於字典是可變的,能存儲任意個數對象,因此可隨意添加

student_A['address'] ="Hubei" #增加了一個地址健值對,由原來的3個變成4個
student_A['PhoneNumber'] ="18012345678"#增加了一個電話健值對,字典student_A里由4個變成5個
print(student_A)  #鍵 — 值對的排列順序與添加順序不同。Python不關心鍵-值對的添加順序,而只關心鍵和值之間的關聯關係

即在student_A字典原有3個關鍵字的基礎上,增加了兩個關鍵字address和PhoneNumber。

上述代碼運行結果:

三、修改字典中的值:要修改字典中的值,可依次指定字典名、用方括弧括起的鍵以及與該鍵相關聯的新值。

student_B['age']=14  #修改student_B的age值為14
print(student_B)
print("\n")

四、刪除鍵-值對:對於字典中不再需要的信息,可使用 del 語句將相應的鍵-值對徹底刪除。使用 del 語句時,必須指定字典名和要刪除的鍵。

del student_A['address']
print(student_A)

五、由類似對象組成的字典:字典存儲的是一個對象(學生A或B)的多種信息,但也可以使用字典來存儲眾多對象的同一種信息

favor_languages = {'jack': 'python','sarah': 'c','lucy': 'ruby','phil': 'python'}
print(favor_languages['lucy'])

六、遍歷字典
一個Python字典可能只包含幾個鍵-值對,也可能包含數百萬個鍵-值對。鑒於字典可能包含大量的數據,Python支持對字典遍歷。字典可用於以各種方式存儲信息,因此有多種遍歷字典的方式:可遍歷字典的所有鍵-值對、鍵或值。

for key,value in student_A.items():# 註意,student_A後增加了.items() 用於讀取字典中的每一項
    print("\nKey: " + key)    #列印出關鍵字
    print("Value: " + value)  #列印出關鍵字的值
    
for name, language in favor_languages.items():     #遍歷所有的鍵值對:用於遍歷字典的for迴圈,可聲明兩個變數,用於存儲鍵-值對中的鍵和值
    print(name.title() + "'s favorite language is " +language.title() + ".") #遍歷字典中的每個鍵-值對,並將鍵存儲在變數name中,而將值存儲在變量language 中 

for name in favor_languages.keys():#遍歷字典中的所有鍵,在不需要使用字典中的值時,方法 keys() ,註意後面增加的keys() print(name.title()) print("\n") my_friends = ['jack', 'sarah'] for name in favor_languages.keys(): print(name.title()) if name in my_friends: print(" Hi " + name.title() +", I see your favorite language is " +favor_languages[name].title() + "!")

具體運行結果:

 按順序遍歷字典中的所有鍵:字典記錄鍵和值之間的關聯關係,但獲取字典的元素的順序是不可預測的,要以特定的順序返回元素,可對返回的鍵進行排序可使用函數 sorted() 來進行排序。

favor_languages= {'jack': 'python','polo': 'java','lucy': 'ruby','Albet': 'java'}
#使用函數 sorted() 來獲得按特定順序排列的鍵列表
for name in sorted(favor_languages.keys()): #對關鍵字進行排序
    print(name.title() + ", thank you !")
print("\n")     
#遍歷字典中的所有值:如果主要獲取的是字典包含的值,可使用方法 values()
for language in favor_languages.values():
    print(language.title())
print("\n")    
#使用集合(set)消除重覆項  
for language in set(favor_languages.values()):
    print(language.title())  

運行結果如下:

 


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

-Advertisement-
Play Games
更多相關文章
  • 當我們給一個元素的一系列子元素設置display: inline-block; 時,會發現子元素之間存在間隙,如 <style> div { display: inline-block; width: 100px; height: 100px; background-color: yellow; } ...
  • 初識JavaScript 瀏覽器執行js簡介 渲染引擎:解析css和html js引擎:編譯js代碼,逐行解析 <script type="null"> alert('我是編程語言,用來控制電腦網頁彈出你好'); alert('我是編程語言,用來控制電腦網頁彈出你好'); </script> js組 ...
  • 一、安裝node.js 參考教程:https://www.runoob.com/nodejs/nodejs-install-setup.html 中文官網:https://nodejs.org/zh-cn/download/ 歷史版本:https://nodejs.org/zh-cn/downloa ...
  • 之前在公眾號轉發了好友 Vajoy 的一篇文章 -- 巧用 CSS 把圖片馬賽克風格化。 核心是利用了 CSS 中一個很有意思的屬性 -- image-rendering,它可以用於設置圖像縮放演算法。 何為 image-rendering? CSS 屬性 image-rendering 用於設置圖像 ...
  • 模板方法模式是什麼 模版方法模式是設計模式中的行為型的一種模式,它在基類中定義了一個演算法的框架,允許子類在不修改結構的情況下重寫演算法的特定步驟。 為什麼要用模板方法模式 模板方法將整個演算法轉換為一系列獨立的步驟,以便子類能對其進行擴展,同時還可讓超類中所定義的結構保持完整。或者當多個類的演算法步驟一致 ...
  • 一、約定編程 Spring AOP是一種約定流程的編程,咱們可以先通過動態代理模式的實現來理解Spring AOP的概念。 代理的邏輯很簡單,例如,當你需要採訪一名兒童時,首先需要經過他父母的同意,在一些問題上父母也許會替他回答,而對於另一些問題,也許父母覺得不太適合這個小孩會拒絕掉,顯然這時父母就 ...
  • 解釋器模式(Interpreter Design Pattern)指給定一個“語言”,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。這裡所指的“語言”是指使用規定格式和語法的代碼。 比如說在計算器中,我們輸入一個加法/減法表達式(中綴表達式)“1+6-5”字元串, ...
  • 《零基礎學Java》 線程的同步 在單線程程式中,每次只能做一件事情,後面的事情需要等待第一件事情完成後才可以進行。為此,Java提供了線程同步機制來防止多線程編程中搶占資源的問題。 線程安全 在編寫多線程程式時,應該考慮到線程安全問題。 模擬未考慮到線程安全問題的售票系統: public clas ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...