字符串: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)