1. 程式人生 > 其它 >字典-python基礎篇七

字典-python基礎篇七

字典   理解字典後,你就能夠更準確地為各種真實物體建模。你可以建立一個表示人的字典,然後想在其中儲存多少資訊就儲存多少資訊:姓名、年齡、地址、職業以及要描述的任何方面。你還能夠儲存任意兩種相關的資訊,如一系列單詞及其含義,一系列人名及其喜歡的數字,以及一系列山脈及其海拔等。   一、簡單的字典。   例如:來看一個遊戲,其中包含一些外星人,這些外星人的顏色點數各不相同。下面是一個簡單的字典,儲存了有關特定外星人的資訊:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points
']) ''' green 5 '''

  在Python中,字典字是一系列鍵—值對值 。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字串、列表乃至字典。事實上,可將 任何Python物件用作字典中的值。在Python中,字典用放在花括號{} 中的一系列鍵—值對錶示。

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

  二、訪問字典中的值

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

#如果玩家射殺了這個外星人,你就可以使用下面的程式碼來確定玩家應獲得多少個點
alien_0 = {'color': 'green', 'points': 5} new_points = alien_0['points'] print("You just earned " + str(new_points) + " points!") #You just earned 5 points!

  三、添 —值對值

  字典是一種動態結構,可隨時在其中新增鍵—值對。要新增鍵—值對,可依次指定字典名、用方括號括起的鍵和相關聯的值。 下面在字典alien_0 中新增兩項資訊:外星人的 x 座標和 y 座標,讓我們能夠在螢幕的特定位置顯示該外星人。

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

  四、修改字典中的值

  要修改字典中的值,可依次指定字典名、用方括號括起的鍵以及與該鍵相關聯的新值。
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")
'''
The alien is green. 
The alien is now yellow.
'''

  五、刪除鍵—值對

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

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
'''
{'color': 'green', 'points': 5}
{'color': 'green'}
'''

  六、由類似物件組成的字典

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
print("Sarah's favorite language is " +
    favorite_languages['sarah'].title() +
    ".")
#Sarah's favorite language is C.
'''
定義好字典後,在最後一個鍵—值對的下一行新增一個右花括號,並縮排四個空格,使其與字典中的鍵對齊。另外一種不錯的做法是在最後一個鍵—值對後面也加上逗號,為以 後在下一行新增鍵—值對做好準備。
這個示例還演示瞭如何將較長的print 語句分成多行。單詞print 比大多數字典名都短,因此讓輸出的第一部分緊跟在左括號後面是合理的。請選擇在合適的地方拆 分要列印的內容,並在第一行末尾加上一個拼接運算子(+ )。按回車鍵進入print 語句的後續各行,並使用Tab鍵將它們對齊並縮排一級。指定要列印的所有內容 後,在print 語句的最後一行末尾加上右括號。
'''

  七、遍歷字典

  1、要編寫用於遍歷字典的for 迴圈,可宣告兩個變數,用於儲存鍵—值對中的鍵和值。

user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
    }
for key, value in user_0.items():
    print("\nKey: " + key)
    print("Value: " + value)
'''
Key: last
Value: fermi

Key: first
Value: enrico

Key: username
Value: efermi
'''

  2、自定義鍵值變數進行遍歷,更容易讓人明白。

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() + ".")
'''
Jen's favorite language is Python.
Sarah's favorite language is C.
Phil's favorite language is Python.
Edward's favorite language is Ruby.
將鍵儲存在變數name 中,而將值儲存在變數language 中
'''

  3、遍歷字典中的所有鍵,以及通過鍵來取值

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
friends = ['phil', 'sarah'] #定義了一個元組
for name in favorite_languages.keys(): #通過keys()獲取鍵
    print(name.title())
    if name in friends:
        print(" Hi " + name.title() +
        ", I see your favorite language is " +
        favorite_languages[name].title() + "!") #獲取鍵的值

'''
Edward
Phil
  Hi Phil, I see your favorite language is Python!
Sarah
  Hi Sarah, I see your favorite language is C!
Jen
'''

  遍歷字典時,會預設遍歷所有的鍵,因此,如果將上述程式碼中的for name in favorite_languages.keys(): 替換為for name in favorite_languages: ,輸出將不變。

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

  字典總是明確地記錄鍵和值之間的關聯關係,但獲取字典的元素時,獲取順序是不可預測的。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
for name in sorted(favorite_languages.keys()): #通過sorted排序
    print(name.title() +", thank you for taking the poll.")

'''
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、遍歷字典中的所有值

  如果你感興趣的主要是字典包含的值,可使用方法values() ,它返回一個值列表,而不包含任何鍵。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
print("The following languages have been mentioned:")
for language in favorite_languages.values(): #通過values()獲取值
    print(language.title())
'''
The following languages have been mentioned:
Python
C
Python
Ruby
Python是重複的
'''

  為剔除重複項,可使用集合(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())
'''
The following languages have been mentioned:
Python
C
Ruby
'''

  八、巢狀

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

  1、字典列表。

  例如:字典alien_0 包含一個外星人的各種資訊,但無法儲存第二個外星人的資訊,更別說螢幕上全部外星人的資訊了。如何管理成群結隊的外星人呢?一種辦法是建立一個外星人列 表,其中每個外星人都是一個字典,包含有關該外星人的各種資訊。