數據結構之字典


字典
字典類似於你通過聯系人名字查找地址和聯系人詳細情況的地址簿,即,我們把鍵(名字)和值(詳細情況)聯系在一起。注意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正確的信息。
注意,你只能使用不可變的對象(比如字符串)來作為字典的鍵,但是你可以不可變或可變的對象作為字典的值。基本說來就是,你應該只使用簡單的對象作為鍵。
鍵值對在字典中以這樣的方式標記:d = {key1 : value1, key2 : value2 }。注意它們的鍵/值對用冒號分割,而各個對用逗號分割,所有這些都包括在花括號中。
記住字典中的鍵/值對是沒有順序的。如果你想要一個特定的順序,那么你應該在使用前自己對它們排序。
字典是dict類的實例/對象。
使用字典
例9.4 使用字典

#!/usr/bin/python
# Filename: using_dict.py
# 'ab' is short for 'a'ddress'b'ook
ab ={ 'Swaraoop':'Swaroop@byteofpython.nfo',
    'Larry':'larry@wall.org',
    'Matsumoto':'matz@ruby-lang.org',
    'Spammer':'spammer@hotmail.com'
    }
print "Swaroop's address is %s" % ab['Swaraoop']
#Adding a key/value pair
ab['Guido']='guido@python.org'
#Deleting a key/value pair
del ab['Spammer']
print '\nThere are %d contacts in the address-book\n'%len(ab)
for name,address in ab.items():
    print 'Contact %s at %s'%(name,address)
if 'Guido' in ab:    #Or ab.has_key('Guido')
    print "\n Guido's address is %s"%ab['Guido']

輸出
[root@losnau python]# python using_dict.py
Swaroop's address is Swaroop@byteofpython.nfo

There are 4 contacts in the address-book

Contact Matsumoto at matz@ruby-lang.org
Contact Larry at larry@wall.org
Contact Swaraoop at Swaroop@byteofpython.nfo
Contact Guido at guido@python.org

Guido's address is guido@python.org

它如何工作
我們使用已經介紹過的標記創建了字典ab。然后我們使用在列表和元組章節中已經討論過的索引操作符來指定鍵,從而使用鍵/值對。我們可以看到字典的語法同樣十分簡單。
我們可以使用索引操作符來尋址一個鍵並為它賦值,這樣就增加了一個新的鍵/值對,就像在上面的例子中我們對Guido所做的一樣。
我們可以使用我們的老朋友——del語句來刪除鍵/值對。我們只需要指明字典和用索引操作符指明要刪除的鍵,然后把它們傳遞給del語句就可以了。執行這個操作的時候,我們無需知道那個鍵所對應的值。
接下來,我們使用字典的items方法,來使用字典中的每個鍵/值對。這會返回一個元組的列表,其中每個元組都包含一對項目——鍵與對應的值。我們抓取這個對,然后分別賦給for..in循環中的變量name和address然后在for-塊中打印這些值。
我們可以使用in操作符來檢驗一個鍵/值對是否存在,或者使用dict類的has_key方法。你可以使用help(dict)來查看dict類的完整方法列表。
關鍵字參數與字典。如果換一個角度看待你在函數中使用的關鍵字參數的話,你已經使用了字典了!只需想一下——你在函數定義的參數列表中使用的鍵/值對。當你在函數中使用變量的時候,它只不過是使用一個字典的鍵(這在編譯器設計的術語中被稱作 符號表 )。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM