一、字典
串列缺點:1)串列可以存盤大量的資料,但資料之間關聯性不強: 2)串列的查詢速度比較慢
容器型資料型別:dict
按照可變與不可變的資料型別的分類:
? 不可變(可哈希)的資料型別:int,str,bool(布林值),tuple(元組),
? 可變(不可哈希)的資料型別:list(串列),dict(字典),set(集合),
字典:{}括起來,以鍵值對形式存盤的容器型資料型別:
dic = {'張三': #鍵值對
{'name': '張四', 'age': 18, 'sex': '男'},
'catr': #鍵值對
['大牛', '卡羅拉', '霸道']
}
print(dic)
注:
- 鍵必須是不可變的資料型別:int,str, 值可以是任意資料型別和對像,唯 一的,
- 字典3.5版之前(包含3.5)是無序的
- 字典3.6x會按照初建立字典的順序排列
- 字典3.7以后都是有序的,
字典的缺點:以空間換時間
字典的優點:查詢速度非常快,存盤關聯性的資料
1、字典的創建
方法一:
dic = dict((('one',1),('two',2),('three',3)))
print(dic)
輸出結果:{'one': 1, 'two': 2, 'three': 3}
方法二:
dic = dict(one=1, two=2, three=3)
print(dic)
輸出結果:{'one': 1, 'two': 2, 'three': 3}
方法三:
dic = dict({'one': 1, 'two': 2, 'three': 3})
print(dic)
輸出結果:{'one': 1, 'two': 2, 'three': 3}
2、增
通過鍵值對直接增加
dic = {'name': 'mrxiong', 'age': 18}
dic['weight'] = 75 # 沒有weight這個鍵,就增加鍵值對
print(dic) # {'name': 'mrxiong', 'age': 18, 'weight': 75}
dic['name'] = 'barry' # 有name這個鍵,就成了字典的改值
print(dic) # {'name': 'barry', 'age': 18, 'weight': 75}
setdefault
dic = {'name':'mrxiong','age':30,}
dic.setdefault('heigth',175) # 沒有height此鍵,則添加
print(dic)
dic.setdefault('name','barry') # 有此鍵則不變
print(dic)
#它有回傳值
dic = {'name': '太白', 'age': 18}
ret = dic.setdefault('name')
print(ret) # 太白
3、刪
pop 通過key洗掉字典的鍵值對,有回傳值,可設定回傳值,
dic = {'name':'mrxiong','age':30,}
ret = dic.pop('name') #有回傳值
print(dic)
當我們不知道字典中有沒有這鍵值,我們可以通過pop實作,如果沒有鍵值時不對字典進行洗掉并回傳設定的引數提示
dic = {'name':'mrxiong','age':30,}
ret = dic.pop('abcc','沒有此鍵') #有回傳值
print(ret)
print(dic)
clear()清空
dic = {'name':'mrxiong','age':30,}
dic.clear()
print(dic)
del
通過鍵洗掉鍵值對
dic = {'name':'mrxiong','age':30,}
del dic['name']
print(dic)
4、改
通過鍵值對直接改
dic = {'name': 'mrxiong', 'age': 30}
dic['name'] = 'barry'
print(dic)
輸出結果:
{'name': 'barry', 'age': 30}
dic = {'name': 'mrxiong', 'age': 30}
dic.update(ses='男',height=175)
print(dic)
輸出結果:
{'name': 'mrxiong', 'age': 30, 'ses': '男', 'height': 175}
dic = {'name': 'mrxiong', 'age': 30}
dic.update(name='barry')
print(dic)
輸出結果:
{'name': 'barry', 'age': 30}
dic = {'name': 'mrxiong', 'age': 30}
dic.update([('one', 1), ('two', 2)])
print(dic)
輸出結果:
{'name': 'mrxiong', 'age': 30, 'one': 1, 'two': 2}
5、查
get
dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '開車', '玩']}
v = dic.get('hobby_list')
print(v)
輸出結果:['直男', '開車', '玩']
dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '開車', '玩']}
v = dic.get('name')
print(v)
輸出結果:mrxiong
dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '開車', '玩']}
v = dic.get('nameone')
print(v)
輸出結果:None
dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '開車', '玩']}
v = dic.get('nameone','沒有此鍵') #可以設定回傳值
print(v)
輸出結果:沒有此鍵
6、三個特殊的操作
keys()
dic = {'name': '太白', 'age': 18}
print(dic.keys()) # dict_keys(['name', 'age'])
values()
dic = {'name': '太白', 'age': 18}
print(dic.values()) # dict_values(['太白', 18])
items()
dic = {'name': '太白', 'age': 18}
print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])
練習題:
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
請在字典中添加一個鍵值對,"k4": "v4",輸出添加后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic['k4']='v4'
print(dic)
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic.setdefault('k4', 'v4')
print(dic)
請在修改字典中 "k1" 對應的值為 "alex",輸出修改后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic['k1']='alex'
print(dic)
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic.update(k1='alex')
print(dic)
請在k3對應的值中追加一個元素 44,輸出修改后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic["k3"].append(44)
print(dic)
請在k3對應的值中把22改為'apple',輸出修改后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic['k3'][2] = 'apple'
print(dic)
請在k3對應的值的第 1 個位置插入個元素 18,輸出修改后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic['k3'].insert(1, 18)
print(dic)
二、字典的嵌套
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
請在k3對應的值中追加一個元素 44,輸出修改后的字典
dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
dic["k3"].append(44)
print(dic)
練習:
dic = {
'name': '汪峰',
'age': 48,
'wife': [{'name': '國際章', 'age': 38}],
'children': {'girl_first': '小蘋果', 'girl_second': '小怡', 'girl_three': '頂頂'}
}
? 1】獲取汪峰的名字,
name = dic['name']
print(name) #汪峰
? 2】獲取這個字典:{'name':'國際章','age':38},
l1 = dic['wife'] # 先獲取到這個串列
di = l1[0] # 串列按照索引取值,這個字典是串列的第一個元素,所以通過索引獲取到這個字典
print(di)
優化:
l1 = dic['wife'][0]
print(l1) #{'name': '國際章', 'age': 38}
? 3】獲取汪峰妻子的名字,
di = dic['wife'][0] # 這個是上一次題獲取的小字典的代碼
wife_name= di['name'] # 通過小字典然后再通過鍵就能獲取到對應的值
print(wife_name)
優化:
l3 = dic['wife'][0]['name']
print(l3)
? 4】獲取汪峰的第三個孩子名字,
dic2 = dic['children'] # 先獲取這個字典
name = dic2['girl_three'] # 在通過這個字典獲取第三個孩子的名字
print(name)
優化:
l2 = dic['children']['girl_three']
print(l2) #頂頂
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122688.html
標籤:Python
上一篇:在畫圖時添加中文
