# 遍歷刪除字典元素_第六章 字典

c3bfe298ed97f8d02727274dea022d57.png

一、使用字典

一個簡單的字典

675c9c982f53a6bc26e8d8f84f2394c2.png

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

在Python中,字典用放在花括號{}中的一系列鍵——值對表示。

鍵——值對是兩個相關聯的值。指定鍵時,Python將返回與之相關聯的值。鍵和值之間用冒號分隔,而鍵——值對之間用逗號分隔。在字典中,想存儲多少個鍵——值對都可以。最簡單的字典只有一個鍵——值對。

1、訪問字典中的值

要獲取與鍵相關聯的值,可依次指定字典名和放在方括號內的鍵。

字典中可包含任意數量的鍵——值對。

967359f1e82991398979533a60edcdab.png

str(new_points)是將得到的5轉換成字符串

2、添加鍵——值對

字典是一種動態結構,可隨時在其中添加鍵——值對。要添加鍵——值對,可依次指定字典名、用方括號括起的鍵和相關聯的值。

d7c300bb5947ebeec63287fb8ccd9da2.png

鍵—值對的排列順序與添加順序不同。(書上是這么寫的,但是為啥我的順序相同)

Python不關心鍵——值對的添加順序,而只關心鍵和值之間的關聯關系。

3、先創建一個空字典

有時候,在空字典中添加鍵—值對是為了方便,而有時候必須這樣做。為此,可先使用一對空的花括號定義一個字典,再分行添加各個鍵——值對。

7b0c2655e4f4a28a962903ba6b1e2693.png

使用字典來存儲用戶提供的數據或在編寫能自動生成大量鍵——值對的代碼時,通常都需要先定義一個空字典。

4、 修改字典中的值

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

bf429e8569e0c952f0138b7910f51289.png

c8e393b77f87a47703f478ec45bfe249.png

5、刪除鍵——值對

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

444dd96aee834db9c6a9d6a4edce645b.png

del(alien_0['points'])換成del alien_0['points']也行

刪除的鍵—值對永遠消失了

6、由類似對象組成的字典

可以使用字典來存儲眾多對象的同一種信息

定義好字典后,在最后一個鍵—值對的下一行添加一個右花括號,并縮進四個空格,使其與字典中的鍵對齊。另外一種不錯的做法是在最后一個鍵—值對后面也加上逗號,為以后在下一行添加鍵—值對做好準備。

7fc35d4a8a5ad29f8464b82cd7e81fb3.png

將較長的print語句分成多行:

9c27ea074d6d05ea8588d26f8fd687a1.png

二、遍歷字典

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

1、遍歷所有的鍵——值對

9cfbe9b7f500a6955a56009e37cb4f08.png

要編寫用于遍歷字典的for循環,可聲明兩個變量,用于存儲鍵—值對中的鍵和值。對于這兩個變量,可使用任何名稱。

上面for語句中包含字典名和方法items(),它返回一個鍵—值對列表。

即便遍歷字典時,鍵—值對的返回順序也與存儲順序不同(我這里還是相同)。Python不關心鍵—值對的存儲順序,而只跟蹤鍵和值之間的關聯關系。

cebe77fe9e5525f9b15202bfaf1d951a.png

2、 遍歷字典中的所有鍵

在不需要使用字典中的值時,方法keys()很有用。

cb72926c6e0be75b9a975c4eb95d88f0.png

遍歷字典時,會默認遍歷所有的鍵,因此,如果將上述代碼中的for name in favorite_language.keys():替換為for name in favorite_language:輸出將不變。顯式地使用方法keys()可讓代碼更容易理解。

3a2a13a4450001001d4ae20e952584df.png

9527f266307bdc99911f1c8f55e04f06.png

95e89cc386c8caf682ebb3a594ee50bb.png

3、按順序遍歷字典中的所有鍵

字典總是明確地記錄鍵和值之間的關聯關系,但獲取字典的元素時,獲取順序是不可預測的。這不是問題,因為通常你想要的只是獲取與鍵相關聯的正確的值。

要以特定的順序返回元素,一種辦法是在for循環中對返回的鍵進行排序。為此,可使用函數sorted()來獲得按特定順序排列的鍵列表的副本。

63c529f3a97d2e29bd79228a5a985c9d.png

4、遍歷字典中的所有值

方法values()返回一個值列表,而不包含任何鍵。

0496696defe305b28b46d96c73bdbe14.png

這種做法提取字典中所有的值,而沒有考慮是否重復。涉及的值很少時,這也許不是問題,但如果被調查者很多,最終的列表可能包含大量的重復項。

為剔除重復項,可使用集合(set)。集合類似于列表,但每個元素都必須是獨一無二的。

f3cf0e63279c269c3b66d57528b4480e.png

通過對包含重復元素的列表調用set()可讓Python找出列表中獨一無二的元素,并使用這些元素來創建一個集合。

三、 嵌套

有時需要將一系列字典存儲在列表中,或將列表作為值存儲在字典中,這稱為嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

1、字典列表

3cb4ecb1be82f820aae84a7571521567.png

c982758f2944eb92a5379275efa8a427.png

1a413970e456efe898628118149981f8.png

f2a7da29e85fdf9b5e7234be62fb5022.png

經常需要在列表中包含大量的字典,而其中每個字典都包含特定對象的眾多信息。

2、在字典中存儲列表

be3dd479e066b9e0dc549b5c02d1e239.png

每當需要在字典中將一個鍵關聯到多個值時,都可以在字典中嵌套一個列表。

8e4d914586c415b570d145d59539a28e.png

4505610bfc245abe706941012d87a22f.png

3、在字典中存儲字典

adbd18a23d2955d97b445e60176cd7dd.png

7f77d79b826a2dadcc856e2acd2b3484.png
#6-1人
#使用一個字典來存儲一個熟人的信息,包括名、姓、年齡和居住的城市。
#該字典應包含鍵first_name、last_name、age和city。
#將存儲在該字典中的每項信息都打印出來。
people = {'first_name':'Si','last_name':'Zhao','age':40,'city':'Tieling',}
print("The first_name is "+people['first_name']+".")
print("The last_name is "+people['last_name']+".")
print("His name is "+people['last_name']+" "+people['first_name']+".")
print("He is "+str(people['age'])+" yesrs old.")
print("He is living in "+people['city']+" now.")#6-2喜歡的數字
#使用一個字典來存儲一些人喜歡的數字
#請想出5個人的名字,并將這些名字用作字典中的鍵
#想出每個人喜歡的一個數字,并將這些數字作為值存儲在字典中
#打印每個人的名字和喜歡的數字
#為讓這個程序更有趣,通過詢問朋友確保數據是真實的。
numbers = {'alice':'4','bob':'5','ken':'9','james':'8','june':'3',}
print("Alice's favorite number is "+numbers['alice']+".")
print("Bob's favorite number is "+numbers['bob']+".")
print("ken's favorite number is "+numbers['ken']+".")
print("James's favorite number is "+numbers['james']+".")
print("June's favorite number is "+numbers['june']+".")#6-3詞匯表
#Python字典可用于模擬現實生活中的字典,但為避免混淆,我們將后者稱為詞匯表。
#想出你在前面學過的5個編程詞匯,將它們用作詞匯表中的鍵,并將它們的含義作為值存儲在詞匯表中。
#以整潔的方式打印每個詞匯及其含義。
#為此,你可以先打印詞匯,在它后面加上一個冒號,再打印詞匯的含義;
#也可在一行打印詞匯,再使用換行符(n)插入一個空行,然后在下一行以縮進的方式打印詞匯的含義。
cihui = {'列表':'是基本數據結構','字典':'一系列鍵——值對','變量':'不確定值的量','函數':'完成特定功能的程序','編譯':'把高級語言編程二進制語言',
}
print("列表"+":"+cihui['列表'])
print("字典"+":"+cihui['字典'])
print("變量"+":"+cihui['變量'])
print("函數"+":"+cihui['函數'])
print("編譯"+":"+cihui['編譯'])#6-4詞匯表2
#既然你知道了如何遍歷字典,現在請整理你為完成練習6-3而編寫的代碼
#將其中的一系列print語句替換為一個遍歷字典中的鍵和值的循環。
cihui = {'list':'是基本數據結構','dict':'一系列鍵——值對','var':'不確定值的量','fun':'完成特定功能的程序','com':'把高級語言編程二進制語言',
}
for key, value in cihui.items():print(key+": "+value)#6-5河流
#創建一個字典,在其中存儲三條大河流及其流經的國家。
#其中一個鍵—值對可能是'nile': 'egypt'。
#使用循環為每條河流打印一條消息,如“The Nile runs through Egypt.”。
#使用循環將該字典中每條河流的名字都打印出來。
#使用循環將該字典包含的每個國家的名字都打印出來。
rivers = {'nile': 'egypt','changjiang': 'china','huanghe': 'china'
}
for river, country in rivers.items():print("The "+river.title()+" runs through "+country.title()+".")
for river in rivers.keys():print(river.title())
for country in rivers.values():print(country.title())#6-6調查
#在6.3.1節編寫的程序favorite_languages.py中執行以下操作
#創建一個應該會接受調查的人員名單,其中有些人已包含在字典中,而其他人未包含在字典中。
#遍歷這個人員名單,對于已參與調查的人,打印一條消息表示感謝
#對于還未參與調查的人,打印一條消息邀請他參與調查。
favorite_language = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
wei = ['erin', 'june', 'bob']
for name in favorite_language:print(name.title()+", thank you for taking for the poll.")
for name in wei:if name not in favorite_language:print("Hi "+name.title()+", I'm inviting you to take the poll.")#6-7人
#在為完成練習6-1而編寫的程序中,再創建兩個表示人的字典
#然后將這三個字典都存儲在一個名為people的列表中
#遍歷這個列表,將其中每個人的所有信息都打印出來。
people_0 = {'first_name':'Si','last_name':'Zhao','age':40,'city':'Tieling',}
people_1 = {'first_name':'Xing','last_name':'Wang','age':20,'city':'Beijing',}
people_2 = {'first_name':'La','last_name':'La','age':35,'city':'Shenyang',}
people = [people_0, people_1, people_2]
for person in people:print(person)#6-8寵物
#創建多個字典,對于每個字典,都使用一個寵物的名稱來給它命名
#在每個字典中,包含寵物的類型及其主人的名字
#將這些字典存儲在一個名為pets的列表中
#再遍歷該列表,并將寵物的所有信息都打印出來
pet_0 = {'type':'cat','zhuren':'alice'
}
pet_1 = {'type':'dog','zhuren':'bob'
}
pets = [pet_0, pet_1]
for pet in pets:print(pet)#6-9喜歡的地方
#創建一個名為favorite_places的字典
#在這個字典中,將三個人的名字用作鍵
#對于其中的每個人,都存儲他喜歡的1~3個地方
#遍歷這個字典,并將其中每個人的名字及其喜歡的地方打印出來
favorite_places = {'alice':['hangzhou', 'sanya'],'bob':['yunnan','chongqing'],'june':['sichuan', 'caoyuan', 'dalian']
}
for name, places in favorite_places.items():print("n"+name.title()+"'s favorite places are: ")for place in places:print(place.title())#6-10喜歡的數字
#修改為完成練習6-2而編寫的程序
#讓每個人都可以有多個喜歡的數字
#然后將每個人的名字及其喜歡的數字打印出來
numbers = {'alice':['4','6','9'],'bob':['5','4','7','9'],'ken':['2','5','8'],'james':['8','6','4'],'june':['3','6','9'],}
for name, numbers in numbers.items():print(name.title()+"'s favorite numbers are:")for number in numbers:print(number)#6-11城市
#創建一個名為cities的字典,其中將三個城市名用作鍵
#對于每座城市,都創建一個字典,并在其中包含該城市所屬的國家、人口約數以及一個有關該城市的事實
#在表示每座城市的字典中,應包含country、population和fact等鍵
#將每座城市的名字以及有關它們的信息都打印出來
cities = {'sanya':{'country':'china','population':300000,'fact':'nanfang',},'yunnan':{'country':'china','population':5000000,'fact':'nanfang',},'dalian':{'country':'china','population':200000,'fact':'beifang',},
}
for city_name, city_info in cities.items():print("nCity:"+city_name.title())population = city_info['population']fact = city_info['fact']print("t有"+ str(population) +"人口")print("t在"+fact)

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

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

相關文章

user-select屬性用法

這是在css3 UI規范中新增的一個功能,用來控制內容的可選擇性。 auto——默認值,用戶可以選中元素中的內容none——用戶不能選擇元素中的任何內容text——用戶可以選擇元素中的文本element——文本可選,但僅限元素的邊界內(只有IE和FF支持)all…

弄清 CSS3 的 transition 和 animation

弄清 CSS3 的 transition 和 animation 原文:弄清 CSS3 的 transition 和 animation弄清 CSS3 的 transition 和 animation transition transition 屬性是transition-property,transition-duration,transition-timing-function,transition-delay的簡稱,用于設定一個元素的兩個狀…

【SVM】簡單介紹(二)

1、SVM另一種推法 我們不管分類平面,直接去假設Margin的兩個邊界: Plus-plane {x:w?xb1}Minus-plane {x:w?xb?1}\begin{aligned} & \text { Plus-plane }\{\boldsymbol{x}: \boldsymbol{w} \cdot \boldsymbol{x}b1\} \\ & \text { Minus-plan…

圖像像素點賦值_Python 圖像處理 OpenCV (2):像素處理與 Numpy 操作以及 Matplotlib 顯示圖像...

普通操作1. 讀取像素讀取像素可以通過行坐標和列坐標來進行訪問,灰度圖像直接返回灰度值,彩色圖像則返回B、G、R三個分量。需要注意的是, OpenCV 讀取圖像是 BGR 存儲顯示。灰度圖片讀取操作:import cv2 as cv# 灰度圖像讀取gray_…

cocopods

一、什么是CocoaPods 1、為什么需要CocoaPods 在進行iOS開發的時候,總免不了使用第三方的開源庫,比如SBJson、AFNetworking、Reachability等等。使用這些庫的時候通常需要: 下載開源庫的源代碼并引入工程向工程中添加開源庫使用到的framework…

CSS3學習手記(10) 過渡

CSS3過渡 允許css的屬性值在一定的時間內平滑地過渡在鼠標單擊、獲取焦點、被點擊或對元素任何改變中觸發,并圓滑地以動畫效果改變CSS的屬性值transition transition-property屬性檢索或設置對象中的參與過渡的屬性 語法 transition-property:none|all|property …

POJ 1286 Necklaces of Beads (Burnside定理,有限制型)

題目鏈接&#xff1a;http://vjudge.net/problem/viewProblem.action?id11117 就是利用每種等價情形算出置換節之后算組合數 #include <stdio.h> #include <cstring> #include <cstdlib> #include <algorithm> #include <cmath>using namespace…

全局搜索快捷鍵_Windows 自帶的聚合搜索來了,與 Mac 的 Spotlight 相比體驗如何?...

最近 Windows 10 推出了自帶的聚合搜索功能 PowerToys Run&#xff0c;取代了之前的 WinR。蘋果的 macOS 以人性化著稱&#xff0c;有幾個功能讓 Windows 用戶一直很羨慕&#xff0c;比如全局的聚合搜索工具 Spotlight。在任何界面 command空格&#xff0c;輸入關鍵字就能搜索電…

transform你不知道的那些事

transform是諸多css3新特性中最打動我的&#xff0c;因為它讓方方正正的box module變得真實了。 transform通過一組函數實現了對盒子大小、位置、角度的2D或者3D變換。不過很長時間內&#xff0c;我對以下問題都想不太明白&#xff1a; 1、尺寸縮放scale與zoom變換有何不同&…

【SVM】簡單介紹(三)

我們考慮SVM的對偶問題&#xff0c;我們通常是在對偶空間中進行求解的。 1、Lagrange Multipliers 對于一個很一般的問題 Minimize f(x)subject to {a(x)≥0b(x)≤0c(x)0\begin{aligned} \text { Minimize } & f(x) \\ \text { subject to } \quad & \left\{\begin{a…

玩轉iOS開發:NSURLSession講解(三)

文章分享至我的個人技術博客: https://cainluo.github.io/14986211698053.html 前言 雖然前面兩講都是說了NSURLSession的一些理論上的知識, 但我們現在起碼對NSURLSession有個大概的了解, 并不會像一開始的那樣, 一臉懵逼的看著, 這個請求是什么鬼, 那個方法是什么鬼, Task是什…

輕松搞定面試中的二叉樹題目

版權全部&#xff0c;轉載請注明出處&#xff0c;謝謝&#xff01;http://blog.csdn.net/walkinginthewind/article/details/7518888 樹是一種比較重要的數據結構&#xff0c;尤其是二叉樹。二叉樹是一種特殊的樹&#xff0c;在二叉樹中每一個節點最多有兩個子節點&#xff0c;…

李倩星r語言實戰_《基于R的統計分析與數據挖掘》教學大綱

《基于R的統計分析與數據挖掘》課程教學大綱課程代碼&#xff1a;090542009課程英文名稱&#xff1a;R Language and Data Mining課程總學時&#xff1a;32講課&#xff1a;32實驗&#xff1a;0上機&#xff1a;0適用專業&#xff1a;應用統計學大綱編寫(修訂)時間&#xff1a;…

自動化測試小結

最近差不多一年從事自動化的測試工作&#xff0c;從開始對自動化一點都不了解到現在能從實現用例、手動命令行執行用例、自制工具來執行用例&#xff0c;感覺進步還是有的。 自動化測試對于手動測試應該是有不小的優勢的&#xff0c;雖然在自動化的用例實現中剛開始的時候會顯得…

python地理可視化_【Python教程】地理可視化之二

Basemap是Matplotlib的一個子包&#xff0c;負責地圖繪制。昨天的推送對如何繪制風向圖進行了描述&#xff0c;本文再次利用該包簡單介紹如何繪制海洋及海冰溫度彩色圖示&#xff0c;該圖常見于NOAA官網。具體操作如下&#xff1a;導入命令1)設置工作環境并導入程序包%cd "…

尋找白板上的便簽條

問題來源&#xff1a;http://answers.opencv.org/question/162480/contour-detection-for-gray-stickers-on-white-background/ 題目的大概意思就是這樣的白板&#xff0c;尋找上面的各種便簽條。我找到了橘色的&#xff0c;結果是這樣代碼是這樣Mat src imread("gray-st…

LeetCode Permutations

原題鏈接在這里&#xff1a;https://leetcode.com/problems/permutations/ 題目&#xff1a; Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2]…

去除內存上的警告,避免程序崩掉

# pragma clang diagnostic push # pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self performSelector:callFunc withObject:array[1]]; # pragma clang diagnostic pop 使用原理&#xff1a;將出現警告的代碼加入內存棧中轉載于:https://www.c…

opengl2 vtk 編譯_編譯和使用VTK時值得注意的點(待續)

最近的一個項目中需要使用VTK&#xff0c;于是開始了VTK的漫漫編譯之路。長篇大論的編譯步驟網上數不勝數&#xff0c;在這里不再細說&#xff0c;可自行google。這里主要說一些在編譯過程中需要注意的地方&#xff0c;以免走歪路。1、使用cmake進行第一次configure的時候需要選…

gg

轉載于:https://www.cnblogs.com/lyzuikeai/p/7091206.html