#字典(dictionary)
和漢語中意思差不多,就是查詞,解釋詞。
學習字典要對應列表來學。(列表在上篇內容)
因爲列表有很多不方便的地方,列表的下標只能表示數據,因此列表不能表示出關係(比如姓名—學號)。
字典可以解決這個問題。通過字典的一個下標,能夠找到與這種除了數據的對應關係。
###字典的下標叫鍵(key),先說一下字典中的鍵。
字典中的值都存儲在一個特定的鍵(key)下,鍵可以是數字,字符串甚至是元組。
###重點 字典中的一個鍵必須是唯一的。
看下面的一個例子:
age={}
age["Bob"]="44"
age["BOb"]="5"
print(tang)
輸出結果爲:
{'Bob': '44', 'BOb': '5'}
給鍵賦值了兩個Bob 最後輸出結果並沒有報錯,那麼這麼說鍵就就不是唯一的了。實際上不是這樣的。
字典關心的怎樣快速得到信息想要查找的信息,我們得到的是Bob即是44歲,又是5歲,顯然是不正確的,說明這當中有兩個人都叫Bob,生活中這樣的例子太多了。在班裏,我們登記成績即使倆個人都叫Bob,學號也不一樣吧。這樣才能登記出正確的成績。回過來看,鍵必須是唯一的。
###字典中的一個鍵可以對應多個值,
當然啦,叫tang先生的成績單上,不是隻有一門的成績
grade={}
grade["tang"]="97","99","87"
print(grade)
輸出結果爲:
{'tang': ('97', '99', '87')}
##字典是由多個鍵(key)和其對應的值(value)構成的key-value對組成。key 和 value 中間用冒號隔開,項之間用逗號隔開,整個字典是由大括號{}括起來。
tang={"name":"gang","age":"7"}
print(tang) #輸出完整的字典
print(tang.keys()) #輸出所有鍵
print(tang.values()) #輸出所有值
輸出結果爲:
{'name': 'gang', 'age': '7'}
dict_keys(['name', 'age'])
dict_values(['gang', '7'])
看下面的例子。並且打印證明它們是字典類型。
tang={}
a=type(tang)
print(a)
tang2={}
print(type(tang2))
tang3=dict()
print(type(tang3))
輸出結果爲:
<class 'dict'>
<class 'dict'>
<class 'dict'>
我們發現字典和列表類似,但是字典是用的{},列表用的是[]。
2.現在我來打印字典,看一下字典裏面有什麼東西
a=dict()
print(a)
輸出結果爲:
{}
這時發現字典裏面是空的。字典可以爲空。
###字典是無序的對象的集合(列表是有序的對象的集合)
tang={"name":"唐","age":"13"}
print(tang)
輸出結果爲:
{ 'age': '13','name': '唐'}
由此可見詞典輸出的順序和輸入的順序不一致。有一次驗證了字典作用是保存了哪些數據。
###從字典中取值
tang={"name":"唐","age":"13"}
print(tang["name"])
輸出的結果是:
唐
###在字典中增加一個鍵 —值對
tang={"name":"唐"}
tang["age"]=13
print(tang)
輸出結果:
{'name': '唐', 'age': 13}
###在字典中修改一個鍵 —值對**
tang={"name":"唐"}
tang["name"]="剛剛"
print(tang)
輸出結果爲:
{'name': '剛剛'}
由此可知,如果key存在就是修改鍵—值對,如果key不存在就是增加鍵—值對。
###在字典中刪除一個鍵 —值對**
tang={"name":"唐","age":13}
tang.pop("name")
print(tang)
輸出結果爲:
{'age': 13}
###統計鍵值對的數量
tang={"name":"唐","age":13}
print(len(tang))
輸出結果爲:2
###合併鍵值對
a={"name":"yun"}
b={"age":"13"}
a.update(b)
print(a)
輸出結果爲:
{'name': 'yun', 'age': '13'}
值得注意的是a.update(b)的方式並沒有返回一個新的字典,而是對a進行了更新。此時的返回值是None.
a={"name":"yun"}
b={"age":"13"}
c=a.update(b)
print(c)
輸出結果爲:
None
###清空字典
a={"name":"yun"}
a.clear()
print(a)
輸出結果爲:
{}
值得注意的是清除字典和合並字典一樣,並沒有形成一個新的字典,而是對原有字典的清除,此時的返回值是None.這裏我就不驗證了。