字符串:str = 'abc'python
列表: list = ['a','b','c']app
元組: tuple = ('a','b','c')post
字典: dict = {'age':18}spa
1、字典
字典是python的基礎數據類型之一:字典能夠存儲大量的數據,關係型數據。
一樣他也是python中惟一的映射類的數據類型。
數據類型的分類:
可變的(不可哈希)數據類型:list,dict
不可變的(可哈希的)數據類型:str,int,bool,tuple
dic = {"name":"jin","age":18,"sex":"male"}
鍵值對的形式存在的,鍵: 值
字典的鍵必須是不可變的數據類型。(工做中:都是由數字,或者str組成)
字典的值是任意數據類型。
dict = {鍵:值} ---> dict = {不可變的數據類型:任意的數據類型}
優勢:
字典能夠存儲大量的數據,關係型數據。
查詢速度快。
python3.5以前包括3.5版本,字典是無序的。
python3.6開始,是有序的。(字典的鍵等於列表的索引)blog
字典爲何尋址快
由於:
字典的鍵是不可變的數據類型,因此是可哈希的,
字典在存入內存的時候會將你的全部的key先進行哈希,再將哈希值存入內存中,
這樣在查詢的時候能夠根據哈希值直接就能夠找到,因此查詢速度很快!索引
2、字典的增刪改查以及其餘操做
dict = {'小晶':{'name': '小晶','age': 23, 'sex': '女',},'name_list': ['王雙','韓蕾','何青松']}
dic = {'name': '小晶', 'age': 23, 'sex': '女', 'job': 'NoIt'}ip
增:
一、鍵直接改,有此key就改,無此key就添加
dic['sex'] = '男' #改
dic['home'] = '惠州' #添加內存
二、setdefault 有此key則不作任何操做可是給我返回對應的值,無此key則添加
dic.setdefault('sex')
print(dic.setdefault('sex')) --->女字符串
dic.setdefault('sex','男')
print(dic.setdefault('sex','男')) --->女get
dic.setdafault('love') --->'love':None
dic.setdefault('hobby','吃') --->'bobby':'吃'
print(dic)
刪:
一、pop:經過鍵去刪除鍵值對,也有返回值,
若是沒有此鍵,也沒有設置參數,則報錯,
若是沒有此鍵,可是設置了第二個參數,則不會報錯,而且返回第二個參數。
print(dic.pop('name')) #小晶
print(dic) #'age': 23, 'sex': '女', 'job': 'NoIt'
print(dic.pop('name1')) #沒有此鍵,沒有設置參數,報錯
print(dic.pop('name1',None)) #沒有此鍵,有設置參數,返回參數:None
print(dic.pop('name1','沒有此鍵')) #沒有此鍵,有設置參數,返回參數:沒有此鍵
二、popitem:python3.5以前隨機刪除某個鍵值對,3.6之後,刪除最後一組鍵值對。有返回值.
print(dic.popitem()) # ('job': 'NoIt')
print(dic) # 'name': '小晶', 'age': 23, 'sex': '女'
三、clear:清空
dic.clear()
print(dic)
四、del
按照鍵刪除鍵值對
del dic['name']
刪除整個字典
del dic
print(dic)
改:
一、經過鍵來改
dic['age'] = 25
print(dic)
二、update
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"yin","weight":75}
dic.update(dic2) # 將dic2中的全部鍵值對覆蓋並添加到dic中,dic2不變。
print(dic)
print(dic2)
#也能夠直接在update括號內自定義添加,與寫兩個字典結合同樣原理
dic.update(a='666',b='222',name='taibai')
print(dic)
查:
經過鍵直接查詢,沒有此鍵則報錯
print(dic['name'])
print(dic['name1'])
經過get()方法查詢,沒有此鍵則默認返回None,也能夠自定義參數
print(dic.get('name'))
print(dic.get('name1'))
print(dic.get('name1','沒有此鍵'))
其餘方法:
一、dic.keys():輸出鍵,能夠轉化成list,能夠遍歷
print(dic.keys(),type(dic.keys())) # 相似於列表的容器中
l1 = list(dic.keys()) #轉化成list
print(l1)
for key in dic.keys(): #遍歷
print(key)
二、dic.values():輸出值,可轉化成list,可遍歷。
print(dic.values())
print(list(dic.values())) #轉化成list
for key in dic.values(): #遍歷
print(key)
三、dic.items():輸出鍵值對,可轉化成list,可遍歷。
print(dic.items())
四、for循環輸出字典:
for i in dic.items():
print(i)
結果:以元組形式輸出
('name', '小晶')
('age', 23)
('sex', '女')
('job', 'NoIt')
for k,v in dic.items():
print(k,v)
結果:自己是什麼類型輸出就是什麼類型
name 小晶
age 23
sex 女
job NoIt
for i in dic: 至關於: for i in dic.keys():
print(i) print(i)
五、長度:
print(len(dic))
六、分別賦值:
a,b = 10,20
print(a,b) #a = 10 , b = 20 int型
a,b = [10,20]
print(a,b) #a = 10 , b = 20 int型
a,b = ['10','20']
print(a,b) #a = 10 , b = 20 str型
a,b = [(1,2),(3,4)]
print(a,b) #a = (1, 2), b = (3, 4) tuple型
a = 10
b = 20
a,b = b,a
print(a,b) #a = 20 , b = 10
3、字典的嵌套
dic = {'name_list': ['王雙', 'xiaoming', '孫飛', 'xiaobai'],
1: {'name': 'xiaobai', 'age': 18, 'sex': '男'},
(1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
}
1,給name_list對應的列表追加一個值: 司徒大人.
dic['name_list'].append('司徒大人')
print(dic)
dic.get('name_list').append('司徒大人')
print(dic)
2,將name_list對應的xiaoming 變成所有大寫.
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)
3, 將1對應的字典添加一個鍵值對: weight : 75
dic[1]['weight'] = 75
print(dic)
dic.get(1).setdefault('weight',75)
print(dic)
4,將1對應的字典的name鍵對應的名字xiaobai換成xiaohei
dic[1]['name'] = 'xiaohei'
print(dic)
5,將 {'ip': '192.168.1.1', 'port': 3306} 此字典的port鍵值對刪除.
dic[(1,2)][1].pop('port')
print(dic)