網站首頁 編程語言 正文
什么是字典
字典是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())
運行結果如下:
原文鏈接:https://www.cnblogs.com/codingchen/p/16138273.html
相關推薦
- 2022-07-07 python?如何求N的階乘_python
- 2022-12-23 C++?Boost?Conversion超詳細講解_C 語言
- 2022-10-19 python基礎教程之csv文件的寫入與讀取_python
- 2022-08-04 基于Python實現二維圖像雙線性插值_python
- 2022-06-30 深度卷積神經網絡各種改進結構塊匯總_其它綜合
- 2022-11-05 替代pod?update速度慢的lg_pod_plugin安裝使用詳解_IOS
- 2022-10-14 DateUtil日期工具類
- 2022-04-08 Swift實現復數計算器_Swift
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支