上節課作業
1. 找到郵政編碼里面數字最多的那個省份的名字和共有幾個數字,結果應該是四川省和數字4
2. 定義如下的一個座位表,然后輸出座位表的每一個人的名字,同時輸出是第幾排第幾列
右下角張鑫晨為第1排第1列
注意最后一排有空位
這個比較簡單就不放代碼了,需要注意的一點是有2個空位置,可以用空字符串代替即可。如果最上面那行最后一個元素不填寫,則循環的時候注意檢查list長度,超過list長度范圍會出錯的。
字典數據類型定義
剛才的作業1里面,為了統計每個省份的個數,用了列表類型來存儲,開始的時候列表為空,如果在列表中沒有找到省份,則向列表追加一個省份和個數的列表元素,這樣的做法用了2層循環,看起來不是太優美,有沒有更好的辦法呢
用字典數據類型能夠解決剛才的問題
字典是一種可變容器,可存儲任意類型對象
字典由0到n對鍵值組成,鍵值之間用冒號分割,每個對之間用逗號分隔,整個字典包括在花括號中
例如:d = { key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或者元組
2個簡單的字典實例:
dict = { "語文課老師" : "張三", "數學課老師" : "李四", "英語課老師" : "王五"}
provinces={"四川" : 4, "湖北" : 2}
訪問字典里的值
把相應的鍵放入方括號,如下:
注意,如果訪問不存在的鍵,則程序會報錯
修改字典
通過賦值語句,可以修改字典的對應的鍵的值,如果該鍵不存在,則會新增鍵值,如下:
刪除字典元素
和列表一樣,使用del命令刪除字典的某個鍵值,或者整個字典,如下:
注意使用del刪除dict字典后的結果和用dict.clear()刪除字典中的所有元素的結果有何不同,這個可以自己去網上搜索答案
判斷是否存在鍵
使用字典自身的函數dict.has_key(key)來判斷是否存在這個鍵,返回True或者False:
如何遍歷字典
使用字典自身的函數dict.keys()來返回一個所有的鍵的列表,然后用for對這個列表進行循環,循環內部可以利用鍵來訪問值:
改造最多郵編省份名稱統計程序
改造統計最多郵編省份名稱的程序,將存儲統計結果的數據類型改為字典類型
判斷是否存在省份名稱的鍵,存在則將統計個數加1,不存在則向字典追加一個列表[省份,個數1]
然后對統計結果字典進行遍歷,判斷并記錄最大個數的那個鍵
改造后的代碼,變得簡潔了:
輸入一行字符串打印出每個字符出現的次數
程序思路:
模仿上面的程序,針對輸入英文字符進行遍歷
每個字符判斷在統計字典是否存在,存在,則值加1,不存在則賦值為1
遍歷統計字典的鍵,輸出個數
大家先不要看下面的代碼,自己嘗試從零開始編寫
代碼如下:
結果如下:
課后作業
1.輸入一行英文字符,分別統計英文字母/空格/數字/其它字符出現的次數
2.對6個數值進行排序,輸出從小到大
往期教程
從0001到0013總計13篇教程。
因為教程是系列教程,前后關聯性非常強,請大家按照微信公眾號【零基礎學編程】的歷史消息發布時間先后次序進行閱讀。
作者簡介
學哥,二十年編程經驗,歷任程序員,資深程序員,技術經理,項目經理,產品經理,系統架構師,IT總監。愛好篆刻,閱讀,美食。
QQ群簡介
歡迎大家加入QQ群 603559164 零基礎學編程,交流學習,共同進步。