Python学习——Day05
python学习——Day05
0.数据类型的分类
-
按照可变与不可变
1.可变(不可哈希)的数据类型:list; dict; set(集合)
2.不可变(可哈希)的数据类型:int; bool; str; tuple(元组)
所谓可变与不可变,是对一个对象进行操作,会不会改变对象原来的值。
例如 s = 'hello',,之后对字符串s的操作都不会改变内存中字符串‘hello’的值,而是产生了一个新的字符串,所以str类型是不可变的数据类型
对于列表 l = [1,2,3] 执行 l.append(4),,,列表L变为[1,2,3,4]。所以lis类型是可变的数据类型
1.字典
1.why
- 列表可以存储大量数据,但数据间的关联性不强
- 列表的查询速度较慢
2.what
1.基本知识点:
-
容器型数据类型:dict.
-
字典:以{}括起来,以键值对的形式存储的数据类型
dic = {
'大壮':
{'name':'大壮','age':'18','sex':'男'},
'三年二班':
['小菜','小饭','小球']
}
-
键: 上述代码中冒号之前的内容.
键必须是不可变的数据类型,且唯一,常用: int str
值可以是任意数据类型,对象.
-
字典在3.5x及其之前版本中是无序的, 在3.6x版本会按照初次建立字典的顺序排列, 但是学术上不认为有序; 在3.7x以后是有序的\
-
字典的缺点: 以空间换时间
-
字典查询速度非常快,存储关联性的数据
2.字典的创建:
- 方式一:
方式一:
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)
- 方式三:
#方式三"
dic = dict({'one': 1, 'two': 2, 'three': 3})
print(dic)
3.字典的增删改查
dic = {'姓名':'qq', '年龄':'13'}
1.增
-
直接增加
dic['性别'] = '男'
#{'姓名': 'qq', '年龄': '13', '性别': '男'}
-
setdefault() 增加新的键, 直接增加; 增加已经存在的键, 则不改变
dic.setdefault('爱好','女')
#{'姓名': 'qq', '年龄': '13', '性别': '男', '爱好': 女}
dic.setdefault('姓名','ww')
#{'姓名': 'qq', '年龄': '13', '性别': '男'}
2.删
1.pop() ***
按照键去删除键值对,返回值是删除的键对应的值
dic.pop('姓名') #{'年龄': '13'}
ret = dic.pop('姓名') #qq
如果设置第二个参数,则不论字典中是否含有此键, 都不会报错, 且没有此键时, 返回值是第二个参数
s = dic.pop('爱好','没有此键') #没有此键
2.clear()
清空
dic.clear() #{}
3.del
del dic['年龄'] #{'姓名': 'qq'}
3.改
dic['姓名'] = 'ww' #{'姓名': 'ww', '年龄': '13'}
4.查
1.直接查
print(dic['姓名']) #qq
2.get()***
s = dic.get('年龄') #13
如果设置第二个参数,则不论字典中是否含有此键, 都不会报错, 且没有此键时, 返回值是第二个参数
s = dic.get('愛好','没有此键sb') #没有此键sb
4.keys() values() items()
print(dic.keys())
#dict_keys(['姓名', '年龄'])
print(dic.values())
#dict_values(['qq', '13'])
print(dic.items())
#dict_items([('姓名', 'qq'), ('年龄', '13')])
for i in dic.items():
print(i,type(i))
#('姓名', 'qq') <class 'tuple'>
#('年龄', '13') <class 'tuple'>
返回两个元组
5.字典的嵌套
dic = {
'name': 'wang',
'age': 48,
'wife': [{'name': 'zhang', 'age': 38}],
'children': {'girl_first': '小苹果', 'girl_second': '小一','girl_three':'钉钉'}
}
print(dic['name']) #wang
print(dic.get('name')) #wang
print(dic.get('wife')[0])
#{'name': 'zhang', 'age': 38}
print(dic.get('wife')[0].get('name')) #zhang
print(dic.get('children').get('girl_three'))
#钉钉
浙公网安备 33010602011771号