字典的初识
列表:
- why:
- 列表可以存储大量数据、数据之间的关联性不强。
- 列表的查询速度比较慢。
- 列表:容器型数据类型(dict)。
- how:
- 数据类型的分类(可变和不可变):
- 可变(不可哈希)的数据类型:list、dict、set。
- 不可变(可哈希)的数据类型:str、bool、int、tuple。
- 数据类型的分类(可变和不可变):
字典:
-
{}括起来,以键值对形式存储的容器型数据类型。
实例:
dic = {'张三': {'name': '张三','age': '18', 'sex': '男'}, '北京': ['朝阳区', '昌平区', '顺义区', '海淀区' ],
-
#字典创建方式: #方式一: dic = dict((('one', 1),('two', 2),('three', 3))) print(dic) #方式二 dic = dict(one=1, tow=2, three=3) print(dic) #方式三 dic = dict({'one': 1, 'tow': 2, 'three': 3}) print(dic)
- 健:必须是不可变的数据类型:(int str)常用类型、(bool tuple几乎不用)唯一的。
- 值可以是任意数据类型,对象。
- 字典3.5x版本之前(包括3.5)是无序的。
- 字典3.6x会按照初次建立的字典的顺序排列,学术上不认为是有序的。
- 字典在3.7x版本以后都是有序的。
- 字典优点:查询速度非常快,存储关联性的数据
- 字典的缺点:以空间换时间。
- 键值对:
- 酒店
- 健:房间号:0-99
- 值:房间:里面存放什么数据都可以
#字典增删改查
#dic = {'name':'张三', 'age': 25, 'hobby_list': ['开车', '游戏', '旅游']}
#增:
'''
#直接增加:有则改之,无则增加
dic = {'naem':'张三', 'age': 25}
dic['sex'] = '男'
dic['age'] = '12'
#setdefault:有则不变,无则增加
#dic.setdefault('hobby') #不添加值默认为:None
dic.setdefault('hobby', '开车')
print(dic)
'''
#删:
'''
#pop:按照健删除键值对,有返回值,设置第二个参数则无论字典中有无此健都不会报错(常用)。
dic.pop('age')
ret = dic.pop('age')
ret = dic.pop('hobby','没有此健')
print(ret)
print(dic)
#clear :清空(非删除字典,而是清空该字典内容)
dic.clear()
print(dic)
#del 按照健去删除。如果没有要删除的健则报错。
del dic['age']
print(dic)
'''
#改
'''
dic['name'] = '李四'
print(dic)
'''
#查
'''
print(dic['hobby_list'])
print(dic['hobby_list1'])
#get: 如果没有该健存在返回None,可以自定义返回值。
l1 = dic.get('hobby_list')
l2 = dic.get('hobby_list1','没有此健')
print(l2)
'''
#字典嵌套
dic = {
'name': '北京',
'age': 2020,
'wife': [{'name': '顺义','age': '2019'},],
'chilaren': {'girl_furst': '朝阳区', 'girl_second': '海淀区', 'girl_three': '通州区' }
}
#1、获取北京的名字。
print(dic['name'])
print(dic.get('name'))
#2、获取这个字典({'name': '顺义','age': '2019'})。
print(dic['wife'][0])
#3、获取顺义的值。
l1 = (dic['wife'][0]['name'])
print(l1)
#4、获取通州区这个值
print(dic['chilaren']['girl_three'])
#练习
#dic = {'k1': 'v1', 'k2': 'v2', 'k3':[11,22,33]}
#1、请在字典中添加一个键值对,“k4”:v4,输出添加后的字典
#dic['k4'] = 'v4'
#dic.setdefault('k4','v4')
#print(dic)
#2、请在修改字典中“k1”对应的值为“666” 输出修改后的字典。
#dic['k1'] = '666'
#print(dic)
#3、请在k3对应的值中追加一个元素 777 ,输出修改后的字典。
#l1 = dic.get('k3')
#l1.append(777)
#dic.get('k3').append(777)
#print(dic)
#4、请在k3对应的额值滴第一个位置插入元素888 输出修好后的字典。
#dic.get('k3').insert(0,888)
#print(dic)
- 总结:
#字典:查询速度快,数据的关联性强。
#健:不可变的数据类型,(str int),唯一。
#值:任意数据类型,对象
#字典的增删改查。
#字典的嵌套。