python基础(字典及常用操作、解构方法)
一、字典:
1.1 定义:
why:
列表的缺点:
1,列表如果存储的数据比较多,那么他的查询速度相对慢。
2,列表存储的数据关联性不强。
what: python基础数据类型之一:字典。
python中唯一的映射类的数据,花括号{}括起来,他是以键值对形式存储,每一对键值对以
逗号隔开的。
{'name': '太白金星', 'age': 18, 'sex': 'man'}
ps:
数据类型的划分:
容器非容器划分:
容器型数据类型:list,tuple,dict,set。
非容器型数据类型:int str bool
可变与不可变划分:
可变(不可哈希hash)的数据类型:list dict,set
不可变(可哈希hash的)的数据类型: int bool str tuple
对数据本身变化:
i = 100
i = 90
print(i)
字典是以键值对形式存储的,
键:不重复的,唯一的,键的数据类型必须是不可变的数据类型。
值:任意数据类型,对象。
字典可以存储大量的键值对数据,
python3.5包括3.5之前:字典是无序的。
python3.6之后,字典变成有序的。
字典的优点:
1,字典存储大量的关系型数据。
2,字典的查询速度非常快。
1.2 字典的创建:
1 # 创建字典 2 dic = {} # 创建空字典 3 dic = dict() # 创建空字典 4 dic = {'a': 1, 'b': 2} # 创建字典 5 dic = dict([(1, 2), ('name', 'alex')]) # [iterable]只要是可迭代对象即可创建字典 6 dic = dict.fromkeys('abc', 0) # fromkeys(iterable, iterable1)可创建多个字典,iterable1后面这个可迭代对象如果为一个不可哈希(可变)对象,那么键a,b,c指向为同一内存地址 7 print(dic)
1.3 字典的常用操作(增删改查):
1 # 增 2 dic = {"name": "jin", "age": 18} 3 dic['sex'] = 'man' 4 print(dic) 5 6 dic.setdefault('hobby', 'singsong') # setdefault()有返回值,如果键存在,则返回原来的键值对中的值,如果键不存在,则返回新增键值对的值 7 dic.setdefault('name', 'alex') # 如果字典内存在键值对,则忽略新增键值对,如果只增加键则值为None 8 print(dic) 9 10 11 # 删: 12 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'} 13 ret = dic.pop('hobby') 14 dic.pop('ghhjk') # 如果没有这个键,则报错 15 print(ret) # 返回删除键值对中的值 16 print(dic) 17 18 dic.popitem() # python3.5之前随机删除键值对,3.6版本之后则字典则为有序字典,默认删除字典最后一个键值对 19 print(dic) 20 21 del dic['age'] # 删除指定键值对 22 del dic['adgsjds'] # 如果没键值对则报错 23 print(dic) 24 del dic # 删除整个字典 25 print(dic) # 打印结果报错 26 27 dic.clear() # 清空字符串 28 print(dic) 29 30 31 # 改: 32 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'} 33 dic['name'] = 'alex' # 指定修改字典键值对 34 35 dic.update(age=34) # 指定修改键值对的值,此时键不能为数字 36 dic.update(gg=78) # 修改方式增加一个新键值对 37 print(dic) 38 39 dic2 = {'name': 'alex', 'age': 18, 'addr': 'SZ'} # 如果存在键值对则更新值,没有则添加新键值对 40 dic2.update(dic) 41 print(dic2) 42 43 # 查: 44 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'} 45 val = dic['age'] # 指定查找键值对 46 print(val) 47 48 val = dic.get('sex') # 没有查找到结果时返回None 49 val = dic.get('hsdghj', '提示信息') # 可以指定查找提示信息,如果字典中没有查找到,则返回提示信息 50 print(val)
1.4 字典的其他操作方法:
1 # 其他操作方法: 2 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'} 3 # for kv in dic: # 默认指定遍历打印键值对的键 4 for kv in dic.keys(): # 指定遍历打印键值对的键 5 print(kv) 6 7 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'} 8 for v in dic.values(): # 遍历打印键值对的值 9 print(v) 10 11 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'} 12 for k, v in dic.items(): # 遍历打印键值对 13 print(k, ':', v)
1.5 字典的其他操作方法出现的错误方法:
1 # 字典中生成的列表不能进行索引查找 2 3 dic = {'1': 1, '2': 2} 4 print(dic.keys()) 5 print(dic.values()) 6 print(dic.items()) 7 8 9 # 打印结果 10 # dict_keys(['1', '2']) 11 # dict_values([1, 2]) 12 # dict_items([('1', 1), ('2', 2)])
1.5 解构方法:
1 # 解构方法(解构对象必须为iterable对象) 2 3 a, b = (1, 2) 4 a, b = [1, 2] 5 a, b = 'ab' # 解构必须一一对应 6 a, b = {1: 2, 2: 3} # 解构字典的键 7 8 print(a, b) 9 10 11 # 两个对象互换 12 a, b = (1, 2) 13 a, b = b, a 14 print(a, b)