Python學習6 字典基礎知識和常用函數

字典概念

字典是 Python 提供的一種常用的數據結構,它用于存放具有映射關系的數據。為了保存具有映射關系的數據,Python 提供了字典,字典相當于保存了兩組數據,其中一組數據是關鍵數據,被稱為 key;另一組數據可通過 key 來訪問,被稱為 value
在這里插入圖片描述
語法:
在這里插入圖片描述
注意事項:
鍵值對,類似Java的Set
在這里插入圖片描述
題目:
字典的鍵不能改變,所以可以使用元組當鍵值,而不能使用列表當鍵值
在這里插入圖片描述

增加字典

在這里插入圖片描述

刪除字典

del與popitem一樣,刪除一個元素,返回被刪除這個元素的 key-value
在這里插入圖片描述

修改字典

在這里插入圖片描述

查找字典

直接查找
在這里插入圖片描述
使用get()函數查找字典
在這里插入圖片描述
題目:
get(“a”,“b”):a是鍵,b是值;如果想要查找的鍵所對應的值不存在,則輸出字典中鍵所對應的值
在這里插入圖片描述

合并兩個字典-update()函數

在這里插入圖片描述

遍歷字典

1.for循環
在這里插入圖片描述
2.keys()遍歷
在這里插入圖片描述
3.values()遍歷
在這里插入圖片描述
4.items()遍歷
在這里插入圖片描述
在這里插入圖片描述

遍歷字典-sorted()和Set()函數

按順序遍歷所有鍵
要以特定順序返回元素,我們可以使用 sorted() 函數來獲得按特定順序排列的鍵列表副本。

sort 與 sorted 區別:
sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。
list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值,而內建函數 sorted 方法返回的是一個新的list,而不是在原來的基礎上進行的操作。

for name in sorted(dict2.keys()):print(name.title())

當值中含有很多重復值時,為了剔除重復項,可使用集合 set()

for name in set(dict2.values()):print(name.title())

字典推導式

在這里插入圖片描述

字典嵌套

將字典儲存在列表中,或者將列表儲存在字典中,稱為嵌套。
字典列表

dict1 = {'物理':90,'化學':85,'生物':88}
dict2 = {'物理':95,'化學':88,'生物':70}
dict3 = {'物理':80,'化學':90,'生物':75}
dict4 = [dict1,dict2,dict3]
for a in dict4:print(a)

字典嵌套列表

dict5 = {'color':'blue','type':['A','B','C']
}

字典嵌套字典

dict6 = {'a':{'name':'Tom','age':6}'b':{'name':'Marry','age':10}
}

練習1-字典列表:用戶輸入姓名

# 讓用戶輸入姓名,
# 如果該姓名在 persons 中存在,提示用戶;
# 若不存在,繼續輸入年齡到列表中。
persons = [{'name': 'Tom', 'age': 18},{'name': 'lisa', 'age': 15},{'name': 'Sufv', 'age': 20},{'name': 'Linda', 'age': 13}
]
print(persons)
flag = True
while flag:name = input("請輸入姓名")for i in persons:if name == i["name"]:print("該姓名在 persons 中存在,結束循環")flag = Falsebreakelse:age = int(input("請輸入年齡"))check = {}check[name] = agepersons.append(check)break
print(persons)

練習3-字典列表輸出最高分和最低分對應的學生姓名

students = [{'name': '張三', 'age': 18, 'score': 88, 'tel': '1323454658', 'gender': '男'},{'name': '李四', 'age': 19, 'score': 89, 'tel': '1111454656', 'gender': '女'},{'name': 'jack', 'age': 38, 'score': 30, 'tel': '12142344562', 'gender': '不明'},{'name': '小白', 'age': 26, 'score': 35, 'tel': '12142345658', 'gender': '女'},{'name': '可文', 'age': 20, 'score': 90, 'tel': '1903334258', 'gender': '男'},{'name': 'mike', 'age': 14, 'score': 100, 'tel': '1345555678', 'gender': '女'},
]
max=students[0]["score"]
min=students[0]["score"]
maxStudent=''
minStudent=''for i in students:max = max if max > i["score"] else i['score']min = min if min < i["score"] else i['score']for j in range(len(students)):if max == students[j]["score"]:maxStudent = students[j]["name"]if min == students[j]["score"]:minStudent = students[j]["name"]print(max,min,maxStudent,minStudent,sep=' ')

綜合練習-字典列表:學生信息輸出

# 4
# 聲明一個列表,列表中包含6位學生的信息,
# 每位學生的信息包括:
# 姓名,年齡,分數(單科),電話,性別(男,女,不明)
students = [{'name': '張三', 'age': 18, 'score': 88, 'tel': '1323454658', 'gender': '男'},{'name': '李四', 'age': 19, 'score': 89, 'tel': '1111454656', 'gender': '女'},{'name': 'jack', 'age': 38, 'score': 30, 'tel': '12142344562', 'gender': '不明'},{'name': '小白', 'age': 26, 'score': 35, 'tel': '12142345658', 'gender': '女'},{'name': '可文', 'age': 20, 'score': 90, 'tel': '1903334258', 'gender': '男'},{'name': 'mike', 'age': 14, 'score': 100, 'tel': '1345555678', 'gender': '女'},
]
#(1)統計不及格學生個數;
count=0
for i in students:if i["score"]<60:count+=1
print("不及格學生人數:"+str(count))# (2)打印不及格學生姓名和對應成績;
count=0
list=[]
for i in students:if i["score"]<60:list.append(i["name"]+"的成績為"+str(i["score"]))
print("不及格學生信息:")
print(list)# (3)統計未成年學生個數;
count=0
for i in students:if i["age"]<18:count+=1
print("未成年學生人數:"+str(count))# (4)打印手機尾號是8的學生名字;
print('手機尾號是8的學生名字:')
for i in students:if i["tel"].endswith('8')==True:print(i["name"])# (5)打印最高分和對應的學生的名字;
max=students[0]["score"]
maxStudent=''
for i in students:max = max if max > i["score"] else i['score']
for j in range(len(students)):if max == students[j]["score"]:maxStudent = students[j]["name"]print("最高分:"+str(max)+"對應的學生姓名為:",maxStudent)# #(6)刪除性別不明的所有學生;
j=0
print(students)
for i in students:if i["gender"]=='不明':students.pop(j)j += 1
print(students)# (7)將列表按學生成績從大到小排序。
#冒泡排序
print(students)
for i in range(len(students) - 1):for j in range(len(students) - 1 - i):if students[j]["age"] < students[j+1]["age"]:temp = students[j]students[j] = students[j + 1]students[j + 1] = tempprint(students)

實驗–評委分數


# (1) 輸入評委人數;
number=int(input('the number of judges:'))
while number<3:print('number is not quality')number=int(input('the number of judges:'))
# (2) 輸入每個評委打分,以字典的形式錄入(分數在0-100之間);
score={}
key=97
for i in range(number):s=int(input('the score of the judge:'))while s<0 or s>100:print('score is not quality')s = int(input('the score of the judge:'))score[chr(key + i)]=s
print(score)
# (3) 刪除最高分和最低分;
max_score=max(score.items(),key=lambda x:x[1])
min_score=min(score.items(),key=lambda x:x[1])
# print(max_score,min_score,sep='\n')score.pop(max_score[0])
score.pop(min_score[0])
print(score)
# (4) 計算剩余打分的平均分。
from functools import reduce
list1=list(score.values())
average=reduce(lambda x,y:x+y,list1)
print("the average score="+str(average/len(list1)))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446425.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446425.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446425.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EndNote概述

概述 EndNote 是SCI&#xff08;Thomson Scientific 公司&#xff09;的官方軟件&#xff0c;支持國際期刊的參考文獻格式有3776 種&#xff0c;寫作模板幾百種&#xff0c;涵蓋各個領域的雜志。簡單來說EndNote的功能就是替你管理文獻&#xff0c;一鍵插入固定格式的參考文獻…

Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP協議

創建項目 新建項目 Java Enterprise JDK1.8 Web Application Tomcat JAVA 默認 過程需要聯網 Maven的配置 IDEA內置Maven 修改本地倉庫位置&#xff0c;因為以后會越來越大 替換配置文件&#xff1a; 阿里云鏡像下載 Servlet基礎 1.動態Web資源開發 2.Servlet是使用J…

STL源碼剖析 配接器

配接器(adapters)在 STL組件的靈活組合運用功能上&#xff0c;扮演著軸承、轉換器的角色。Adapter這個概念&#xff0c;事實上是一種設計模式(design pattern)。 Design Patterns)) 一書提到23個最普及的設計模式&#xff0c;其中對odopter樣式的定義如下&#xff1a;將 一個cl…

中科大 計算機網絡3 網絡邊緣Edge

網絡結構 邊緣系統 網絡核心 接入網 方塊&#xff1a;邊緣系統(主機) 圓的&#xff1a;網絡核心&#xff0c;數據交換作用 連接邊緣系統和網絡核心的叫做接入網&#xff08;access&#xff09;&#xff0c;把邊緣的主機接入到網絡核心&#xff08;所以是分布式的&#xff09; …

STL源碼剖析 入門開始 STL概論與版本簡介

源代碼之中時而會出現一些全局函數調用操作&#xff0c;尤其是定義于<stl_construct.h> 之中用于對象構造與析構的基本函數&#xff0c;以及定義于<stl_uninitialized.h>之 中 用 于 內 存 管 理 的 基 本 函 數 &#xff0c; 以及定義于<stl_algobase.h>之中…

中科大 計算機網絡4 網絡核心Core 分組交換 電路交換

網絡核心 電路交換&#xff08;線路交換&#xff09;&#xff1a;打電話之前&#xff0c;先建立一條鏈路&#xff08;物理&#xff09; 分組交換&#xff1a;存儲轉發的方式 電路交換&#xff08;線路交換&#xff09; 通過信令&#xff08;控制信息&#xff0c;如&#xf…

STL 源碼剖析 空間配置器

以STL的運用角度而言&#xff0c;空間配置器是最不需要介紹的東西&#xff0c;它總是隱藏在一切組件&#xff08;更具體地說是指容器&#xff0c;container&#xff09; 的背后但是STL的操作對象都存放在容器的內部&#xff0c;容器離不開內存空間的分配為什么不說allocator是內…

中科大 計算機網絡7 分組延遲 分組丟失 吞吐量

分組丟失和延遲的原因 隊列太長沒有意義&#xff0c;用戶需求 排隊&#xff1a;輸出能力<到來的分組&#xff0c;需要等待 四種分組延遲 節點處理延遲&#xff1a;確定的 排隊延遲&#xff1a;隨機&#xff0c;取決于網絡情況 一個比特的傳輸時間&#xff1a; R1Mbps …

STL源碼剖析 迭代器iterator的概念 和 traits編程技法

iterator模式定義如下&#xff1a;提供一種方法&#xff0c;使之能夠依序巡訪某個 聚合物(容器)所含的各個元素&#xff0c;而又無需暴露該聚合物的內部表述方式.STL的中心思想在于&#xff1a;將數據容器(containers)和算法(algorithms)分開&#xff0c;彼此獨立設計&#xff…

中科大 計算機網絡11 應用層原理

應用層大綱 傳輸層向應用層提供的服務&#xff0c;形式是Socket API&#xff08;原語&#xff09; 一些網絡應用的例子 互聯網層次中&#xff0c;應用層協議最多 流媒體應用&#xff1a;直播 網絡核心最高的層次就是網絡層 應用進程通信方式 C/S&#xff1a; 客戶端&…

STL源碼剖析 序列式容器 vector 和 ilist

Vector list 單向鏈表 ilistlist的刪除操作&#xff0c;也只有指向被刪除元素的迭代器會失效&#xff0c;其他迭代器不會受到影響

中科大 計算機網絡5 接入網和物理媒體

接入網 接入網&#xff1a;把邊緣&#xff08;主機&#xff09;接入核心&#xff08;路由器&#xff0c;交換機&#xff09; 骨干網【連接主機和主機】和接入網中都有物理媒體 接入方式&#xff1a;有線和無線 帶寬共享/獨享 接入網&#xff1a;住宅接入modem modem調制解調…

STL源碼剖析 序列式容器 deque雙端隊列

相較于vector的內存拷貝&#xff0c;deque在內存不足時只需要進行內存的拼接操作即可&#xff0c;不需要重新配置、復制、釋放等操作&#xff0c;代價就是迭代器的架構不是一個普通的指針&#xff0c;比較復雜d e q u e 的迭代器 deque是分段連續空間。維持其“整體連續”假象…

中科大 計算機網絡6 Internet結構和ISP

互聯網的結構 端系統通過接入ISPs接入互聯網 n個ISP互相連接&#xff1a; IXP,Internet exchage point:互聯網接入點&#xff0c;互聯網交互點 ISP&#xff1a;互聯網服務提供商&#xff0c;提供接入&#xff0c;提供網絡【中國移動&#xff0c;中國電信】 ICP&#xff1a…

STL源碼剖析 Stack棧 queue隊列

隨機迭代器用于隨機數據訪問&#xff0c;所以棧stack不具備此功能

中科大 計算機網絡8 協議層次和服務模型

協議層次 協議層次&#xff1a;現實生活中的例子 分層 分層處理和實現復雜系統 圖中&#xff0c;左邊是模塊&#xff0c;右邊是分層 計算機的設計是分層&#xff0c;每一層實現一個或一組功能&#xff0c;下層向上層提供服務&#xff1b;但效率比較低 對等層實體通過協議來交換…

STL源碼剖析 heap堆結構

heap一般特指max-heap&#xff0c;即最大的元素位于heap和array的首部 heap不提供遍歷功能&#xff0c;也不提供迭代功能

中科大 計算機網絡9 互聯網歷史

總綱 計算機網絡 早期1960以前 1961-1972 NCP協議&#xff1a;相當于現在的TCP和IP協議 每個節點即是數據的源也是數據的目標

STL源碼剖析 序列式容器 slist

STL l i s t 是個雙向鏈表(double linked lis t) 。SGI STL提供了一個單向鏈 表 (single linked lis t) , 名 為 slist s l i s t 和 l i s t 的主要差別在于&#xff0c;前者的迭代器屬于單向的Forwardlterotor, 后者的迭代器屬于雙向的Bidirectional Iterator.為此&#xff0…