九、python基礎:數據容器(字典的創建和相關操作)

九、python基礎:數據容器(字典的創建和相關操作)

1、什麼是字典

在python中,字典用英文dict表示,它用一個大括號包起來的,裏面可以存放各種類型數據。但必須是以鍵值對的形式存在,鍵值對的個數沒有限制,鍵值對之間使用逗號隔開,每個鍵值對中間都有一個冒號,冒號前面的是鍵key,冒號後面的是值value。

d = {'name':'xiaoming', 'skill': ['eat', 'run', 'study']}

像這個變量d,我們用一個字典賦值給它,字典中的“name”和“skill”就是它的鍵。“xiaoming”和列表[‘eat’, ‘run’, ‘study’]就是它的值。一個"name":‘xiaoming’,這樣的組合就是一個鍵值對。

在字典中,鍵key和值value是成對出現的,有鍵就必須有值。
它通常用來表示一一對應的映射關係,這個怎麼理解呢?舉個例子
我們可以用一個字典來存放一個班級的學生信息

students = [
    {'name':'小明', 'phone': '156XXXXXX', '成績': 90},
    {'name': '小紅', 'phone': '185XXXXXXX', '成績':95},
]

這樣的結構其實是一個列表裏面存放了2個字典,內部的每個字典都存放了一個學生的多個信息。

如果我們想要知道每個學生的姓名,我們只要把內部的每個字典都取出來,接着用鍵名"name"去從字典中取出值,就能知道對應學生的姓名是什麼了。
演示一下:
在這裏插入圖片描述
這就是映射:只要使用’name’去取值,就一定能獲取到對應一個姓名,用’phone’去取值,就一定能獲取到對應的電話號碼。

也是因此,在同一個字典中,鍵名是不能重複的。否則,你通過鍵名去取值的時候,解釋器都不知道你要取的是哪一個。

並且你在定義的時候,如果有相同鍵名的,解釋器只會使用最後一個鍵值對生成。
例如這個,字典中的2個鍵值對都使用了"name"作爲鍵名,導致創建出來的字典,只有一個鍵值對。
在這裏插入圖片描述

2、字典的創建:

2.1、簡單創建方法:

# 創建一個空字典,直接用大括號即可,也可以用內置方法dict()
d = {}
d = dict()
# 字典也可以存放各種類型的數據。
d = {'a': '1', 'b': '2', 'c': 1, 'd':1.2, 'e': (1, 2), 'f': [1, 2], 'g':{'a': '1'}}

2.2、較複雜的創建方法:

# 內置方法dict,搭配關鍵字參數創建
dict(a='a', b='b', t='t')
# 內置方法dict,搭配zip映射函數構建
dict(zip(['one', 'two', 'three'], [1, 2, 3]))
# 用可迭代對象創建,列表內嵌套元組
dict([('one', 1), ('two', 2), ('three', 3)])

演示結果:
在這裏插入圖片描述

2.3、自動批量創建(使用for循環結合佔位符)

dict = {}
for i in range(5):
    dict['第%d個'%i] = i
print(dict)

演示結果:
在這裏插入圖片描述

3、字典的常用操作:

我們操作字典經常用到的就是取出某個鍵對應的值
使用中括號,你要去哪個鍵的值就寫對應的鍵名:

d = {'name':'小明', 'age':12, 'skill': ['eat', 'run', 'study']}

# 取出字典d中的鍵名name對應的值
d['name']

還有其他用到比較多的操作是:
修改某個值,新增鍵值對,統計字典的鍵值對個數,取出字典所有鍵,取出字典所有值,取出字典所有鍵值對

d = {'name':'小明', 'age':12, 'skill': ['eat', 'run', 'study']}
# 修改某個值(把名字改成小紅)
d['name'] = '小紅'
# 新增鍵值對(加個電話號碼)
d['phone'] = '156xxxxxxx'
# 統計字典的鍵值對個數
len(d)
# 取出字典所有鍵
d.keys()
# 取出字典所有值
d.values()
# 取出字典所有鍵值對
d.items()

演示結果:
在這裏插入圖片描述
在這裏插入圖片描述

4、一些不常用的操作函數和方法

min(d)     # 字典中鍵的最小值
max(d)     # 字典中鍵的最大值

d.get(key, default)    # 鍵存在則返回相應值,否則返回默認值
d.pop(key, default)    # 鍵存在則返回相應值,並且刪除該鍵值對,否則返回默認值
d.popitem()    # 隨機從字典中取出一個鍵值對,以元組形式返回
d.clear()    # 刪除所有鍵值對
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章