Python Day 5 基础数据类型(字典)
Python Day 5
版本区分:
字典在python3.5包含3.5之前都是无序,但是3.6之后是有序的。
可迭代:
可以被for循环依次取到数值
数据类型的分类
可变(不可哈希hash):list,dict,set list = [111,222,333] (内容可变,hash不固定)
不可变(可哈希hash):str,turple,int,bool name = 'alex' (内容不可变,hash值是固定值)
容器类:
容器类的数据类型: list,tuple,dict l1 = [l1,True,'alex']
非容器类的数据类型:str,int,bool s1 = '[11,22,33]'
字典
基础数据类型之一,{} 以键值对的形式存储数据。
以{key:value} 形式,(映射)存储的大量的关系型数据,二分法查询数据,查询速度非常快。
key 键 : 唯一 必须是不可变的可哈希的数据类型。
value 值 :可以是任意数据类型。
查: 三种方法
字典的键通过hash表转换成数字,采用二分查找查询数字。
1、key查询方法(直接查询) dic['key'] 注意:此方法查询key不存在时,会直接报错
dic = {'name':'ck','age':18}
print(dic['name'])
2、get查询 dic.get('key') ,查询key不存在时默认返回None,可以自定义失败返回内容 (推荐使用)
dic = {'name':'ck','age':18}
print(dic.get('name'))
=============
dic = {'name':'ck','age':18}
print(dic.get('name1','key不存在'))
3、for循环查询。直接循环遍历dic 效果等同于 dic.keys(), dic.values(), dic.items() 类似于list但不是list的类型。 list(查询到的结果)可以转列表 可以遍历 没有索引
for key in dic.keys(): print(key) for value in dic.values(): print(value) for k,v in dic.items(): # [('name', '老男孩'), ('age', 56), ('hobby', 'women')] print(k,v)
分别赋值概念 a, b = 1, 2 a, b = ('alex', '34') a, b = ['alex', '34'] 有 如下 a = 1 b = 3,用一行代码将a b值互换。 a = 1 b = 3 a, b = b, a
增:两种方法
1、直接赋值 dic['socre'] = 100 ,(已存在key时,会覆盖值内容。同修改方法)
dic = {'name':'ck','age':18}
dic['socre'] = 100
print(dic)
2、dic.setdefault()
dic = {'name':'ck','age':18}
dic.setdefault('sex') #可以只添加值
dic.setdefault('sex','man') #添加key:value ,当key存在时,不论value是否存在,不进行任何操作
print(dic)
改:两种方法
1、赋值操作。 dic['name'] = cktest (当key存在时,赋值会覆盖原value,同增加方法。)
dic = {'name':'ck','age':18}
dic['name'] = 'cktest'
print(dic)
2、update。前提需要两个字典。 对照字典中所有键值对 覆盖添加目标字典中,对照字典不变。
dic = {'name':'ck','age':18}
dic2 = {'sex':'man','age':'19'}
dic.update(dic2) #对dic字典与dic2进行比较更新,将dic2中的添加到dic中,将共有的key对应的value更新为dic2内容。dic2不变,只作为供应。
print(dic)
删:四种方法
1、pop 有返回值 返回值为删除的值。
dic = {'name':'ck','age':18}
print(dic.pop('name'))
print(dic)
============
ck
{'age': 18}
2、popitem dic.popitem() 随机删除(由于字典在python3.5包含3.5之前都是无序,但是3.6之后是有序的。使用3.6版本删除会删除最后的) 有返回值,返回值为元组,里面是删除的键值对。
dic = {'name':'ck','age':18}
print(dic.popitem())
print(dic)
=============
('age', 18)
{'name': 'ck'}
3、clear dic.clear() 清空字典。
dic = {'name':'ck','age':18}
dic.clear()
print(dic)
结果:
{}
4、del
1.内存删除(删除整个字典)
dic = {'name':'ck','age':18}
del dic
2.按照键,删除键值对 没有会报错
dic = {'name':'ck','age':18}
del dic['name']
print(dic)
fromkeys() 快速创建字典,以第一位作为键,第二位作为值,可迭代创建
a = fromkeys('abc','a')
字典嵌套
同列表嵌套相似,都是通过索引找到对应的值,对值进行操作。
dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list':['抽烟', '喝酒', '烫头'], } } # 1,给dic添加一个键值对,学校:老男孩 dic["学校"] = "老男孩" # 2,将status对应的值改成True dic['status'] = True # 3,给name_list对应的列表追加一个元素:平平 dic['name_list'].append('平平') # 4,给personal_msg对应的字典添加一个键值对sex:男 dic['personal_msg']['sex'] = '男' # 5,将hobby_list 对应的列表中的烫头改成唱歌。 dic['personal_msg']['hobby_list'][-1] = '唱歌' print(dic)

浙公网安备 33010602011771号