第四章 字典

<u>字典相當(dāng)于java中的Map集合(以鍵值對的形式存放數(shù)據(jù))</u>

:一般是字符串居多。:數(shù)字吗冤、字符串又厉、列表、字典本身欣孤、任何Python對象馋没。

alien_0 = {'color':'green','points':s}
alien_1 = {'color':'red'}

在字典中,你想存儲多少個鍵—值對都可以降传。最簡單的字典只有一個鍵—值對

5.1 使用字典

5.1.1 訪問字典中的值——(依次指定字典名和放在方括號內(nèi)的鍵)

alien_0 = {'color': 'green','points':s} 
print(alien_0['color'])
#輸出結(jié)果:green
new_points = alien_0['points'] 
print("You just earned " + str(new_points) + " points!")

str()將整個整數(shù)轉(zhuǎn)化為字符串。

5.1.2 添加鍵-值對

字典是一種動態(tài)結(jié)構(gòu)勾怒。

alien_0 = {'color': 'green', 'points': 5} 
print(alien_0) 
alien_0['x_position'] = 0 
alien_0['y_position'] = 25 
print(alien_0)
#結(jié)果:
{'color': 'green', 'points': 5} 
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}

注意:Python不關(guān)心鍵—值對的添加順序婆排, 而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系。

5.1.3 先創(chuàng)建一個空字典

可先使用一對 空的花括號定義一個字典笔链,再分行添加各個鍵—值對

alien_0 = {}                #定義一個空字典
alien_0['color'] = 'green' 
alien_0['points'] = 5
print(alien_0)
#結(jié)果:
{'color': 'green', 'points': 5}

5.1.4 修改字典中的值

要修改字典中的值段只,可依次指定字典名、用方括號括起的鍵以及與該鍵相關(guān)聯(lián)的新值鉴扫。

alien_0 = {'color': 'green'} 
print("The alien is " + alien_0['color'] + ".") 
alien_0['color'] = 'yellow' 
print("The alien is now " + alien_0['color'] + ".")
#結(jié)果:
The alien is green. 
The alien is now yellow.

5.1.5 刪除鍵-值對

使用del語句刪除赞枕,且必須指定<u>字典名</u>和<u>要刪除的鍵</u>(與鍵對應(yīng)的值也一并刪除

alien_0 = {'color': 'green', 'points': 5} 
print(alien_0) 
del alien_0['points'] 
print(alien_0)
#結(jié)果:
{'color': 'green', 'points': 5} 
{'color': 'green'}

5.1.6 由類似對象組成的字典(格式)

favorite_languages = { 
    'jen': 'python', 
    'sarah': 'c', 
    'edward': 'ruby', 
    'phil': 'python', 
 }

確定需要使用多行來定義字典時,在輸入左花括號后按回車 鍵坪创,再在下一行縮進(jìn)四個空格炕婶,指定第一個鍵—值對,并在它后面加上一個逗號莱预。定義好字典后柠掂,在最后一個鍵—值對的下一行添加一個右花括號,并縮進(jìn)四個空格依沮,使其與 字典中的鍵對齊涯贞。

是在最后一個鍵—值對后面也加上逗號,為以后在下一行 添加鍵—值對做好準(zhǔn)備危喉。

5.2 遍歷字典

5.2.1 遍歷所有的鍵值對

運(yùn)用for循環(huán):for k, v in user_0.items() 宋渔,其中的k,v都是隨意命名,但最好要見名知意辜限。

注意:即便遍歷字典時皇拣,鍵—值對的返回順序也與存儲順序不同。

favorite_languages = {
    'jen': 'python', 
    'sarah': 'c', 
    'edward': 'ruby', 
    'phil': 'python', 
 } 
for name, language in favorite_languages.items(): 
    print(name.title() + "'s favorite language is " + 
        language.title() + ".")
#結(jié)果:
Jen's favorite language is Python. 
Sarah's favorite language is C. 
Phil's favorite language is Python. 
Edward's favorite language is Ruby.

5.2.2 遍歷字典中的所有鍵--keys()

#1.
favorite_languages = { 
    'jen': 'python', 
    'sarah': 'c', 
    'edward': 'ruby', 
    'phil': 'python', 
 } 
friends = ['phil', 'sarah'] 
for name in favorite_languages.keys(): 
    print(name.title()) 
    
    if name in friends: 
         print(" Hi " + name.title() + 
             ", I see your favorite language is " + 
            favorite_languages[name].title() + "!")
#輸出結(jié)果:
Edward 
Phil 
 Hi Phil, I see your favorite language is Python! 
Sarah 
 Hi Sarah, I see your favorite language is C! 
Jen
#2.
favorite_languages = { 
    'jen': 'python', 
    'sarah': 'c', 
     'edward': 'ruby', 
     'phil': 'python', 
 } 
 if 'erin' not in favorite_languages.keys():
        print("Erin, please take our poll!")
#輸出結(jié)果:
Erin, please take our poll!

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

要以特定的順序返回元素列粪,一種辦法是在for循環(huán)中對返回的鍵進(jìn)行排序审磁。為此谈飒,可使用函

數(shù)sorted()來獲得按特定順序排列的鍵列表的副本。

注意:<u>這里的順序并不是按照字典里的順序态蒂,而是按照字典里鍵的字母順序杭措。</u>

favorite_languages = { 
    'jen': 'python', 
    'sarah': 'c', 
    'edward': 'ruby', 
    'phil': 'python', 
 } 
for name in sorted(favorite_languages.keys()): 
     print(name.title() + ", thank you for taking the poll.")
#結(jié)果:
Edward, thank you for taking the poll. 
Jen, thank you for taking the poll. 
Phil, thank you for taking the poll. 
Sarah, thank you for taking the poll.

5.2.4 遍歷字典中的所有值--values()

返回一個值列表,但不包含任何鍵钾恢。

#1.提取字典中所有的值手素,而沒有考慮是否重復(fù)

for language in favorite_languages.values(): 
    print(language.title())
#結(jié)果:
Python 
C 
Python 
Ruby

#2.為剔除重復(fù)項,可使用集合(set)

favorite_languages = { 
    'jen': 'python', 
     'sarah': 'c', 
     'edward': 'ruby', 
     'phil': 'python', 
 } 
 print("The following languages have been mentioned:") 
for language in set(favorite_languages.values()): 
     print(language.title())
#結(jié)果:
The following languages have been mentioned: 
Python 
C 
Ruby

5.3 嵌套

5.3.1 在列表中存儲字典

問題:字典alien_0包含一個外星人的各種信息瘩蚪,但無法存儲第二個外星人的信息泉懦,更別說屏幕上

全部外星人的信息了。如何管理成群結(jié)隊的外星人呢疹瘦?

解決辦法:是創(chuàng)建一個外星人列表崩哩,其中每 個外星人都是一個字典,包含有關(guān)該外星人的各種信息

alien_0 = {'color': 'green', 'points': 5} 
alien_1 = {'color': 'yellow', 'points': 10} 
alien_2 = {'color': 'red', 'points': 15} 
     aliens = [alien_0, alien_1, alien_2]    #將每個字典都存放在列表中

for alien in aliens: 
     print(alien)
#結(jié)果:
{'color': 'green', 'points': 5} 
{'color': 'yellow', 'points': 10} 
{'color': 'red', 'points': 15}

5.3.2 在字典中存儲列表

每當(dāng)需要在字典中將一個鍵關(guān)聯(lián)到多個值時言沐,都可以在字典中嵌套一個列表

example:一個人可以喜歡多種語言

 favorite_languages = { 
     'jen': ['python', 'ruby'], 
    'sarah': ['c'], 
     'edward': ['ruby', 'go'], 
     'phil': ['python', 'haskell'], 
 }
  for name, languages in favorite_languages.items(): 
    print("\n" + name.title() + "'s favorite languages are:") 
    for language in languages: 
         print("\t" + language.title())
            
#結(jié)果:
Jen's favorite languages are: 
 Python 
 Ruby 
Sarah's favorite languages are: 
 C 
Phil's favorite languages are: 
 Python 
 Haskell 
Edward's favorite languages are: 
 Ruby 
 Go

5.3.3 字典中存儲字典

example:用戶字典里存儲每一位用戶邓嘹,每位用戶的信息包含其各種字典信息

users = { 
    'aeinstein': { 
    'first': 'albert', 
    'last': 'einstein', 
    'location': 'princeton', 
     }, 
 
    'mcurie': { 
     'first': 'marie', 
     'last': 'curie', 
    'location': 'paris', 
         }, 
 } 
 
 for username, user_info in users.items(): 
        print("\nUsername: " + username) 
        full_name = user_info['first'] + " " + user_info['last'] 
        location = user_info['location'] 
        
 print("\tFull name: " + full_name.title()) 
 print("\tLocation: " + location.title())
#結(jié)果:
Username: aeinstein 
 Full name: Albert Einstein 
 Location: Princeton 
Username: mcurie 
 Full name: Marie Curie 
 Location: Paris
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市险胰,隨后出現(xiàn)的幾起案子汹押,更是在濱河造成了極大的恐慌,老刑警劉巖起便,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棚贾,死亡現(xiàn)場離奇詭異,居然都是意外死亡榆综,警方通過查閱死者的電腦和手機(jī)妙痹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奖年,“玉大人细诸,你說我怎么就攤上這事÷兀” “怎么了震贵?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長水评。 經(jīng)常有香客問我猩系,道長,這世上最難降的妖魔是什么中燥? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任寇甸,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拿霉。我一直安慰自己吟秩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布绽淘。 她就那樣靜靜地躺著涵防,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沪铭。 梳的紋絲不亂的頭發(fā)上壮池,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音杀怠,去河邊找鬼椰憋。 笑死,一個胖子當(dāng)著我的面吹牛赔退,可吹牛的內(nèi)容都是我干的橙依。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼离钝,長吁一口氣:“原來是場噩夢啊……” “哼票编!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卵渴,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲤竹,沒想到半個月后浪读,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辛藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年碘橘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吱肌。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡痘拆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氮墨,到底是詐尸還是另有隱情纺蛆,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布规揪,位于F島的核電站桥氏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猛铅。R本人自食惡果不足惜字支,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堕伪,春花似錦揖庄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桨昙,卻和暖如春检号,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛙酪。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工齐苛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桂塞。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓凹蜂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阁危。 傳聞我的和親對象是個殘疾皇子玛痊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在Python中,字典 是一系列鍵—值對 狂打。每個鍵 都與一個值相關(guān)聯(lián)擂煞,你可以使用鍵來訪問與之相關(guān)聯(lián)的值。與鍵相關(guān)聯(lián)...
    Kuznets閱讀 209評論 0 0
  • 字典中的值沒有特殊的順序趴乡,但是都存儲再一個特定的鍵里对省。鍵可以是數(shù)字,字符串甚至是元組晾捏。 1.字典創(chuàng)建和使用 >>>...
    還是暈船閱讀 377評論 0 0
  • 字典蒿涎,又稱為符號表(symbol table),關(guān)聯(lián)數(shù)組(associative array)或者映射(map)惦辛,...
    半畝房頂閱讀 364評論 1 3
  • 字典是哈希鍵的底層實現(xiàn)之一劳秋,Redis數(shù)據(jù)庫的底層實現(xiàn)也是使用字典。 redis的字典使用哈希表作為底層實現(xiàn)胖齐,一個...
    今天不想掉頭發(fā)閱讀 143評論 0 0
  • 從放假到現(xiàn)在一直很忙市怎,很累岁忘,不過每天接兒子老師都夸他很聽話,背古詩比其他同學(xué)慢了区匠,飯都不吃直到背過干像,孩子自尊...
    高譽(yù)恒閱讀 175評論 0 0