python基本数据类型三

01.python数据类型之字典

  • 字典的初识
    • 容器类数据类型 dict
    • 可变数据类型
    • 因为列表查询速度较慢且数据之间关联性不强,出现了字典
    • 字典
      • {} 键值对形式存储
      • 键必须是不可变的数据类型:int,str,bool,tuple
      • 字典3.5x版本之前(包括3.5)是无序的
      • 字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的
      • 字典3.7x以后都是有序的
      • 字典的优点:查询速度非常快,存储关联性的数据
      • 字典的缺点:以空间换时间
      • 键要不可变的数据类型且是唯一的
  • 字典的创建方式
    # --encoding:utf-8 --

    """
    Create on 2019/7/26 0026 15:51
    """
    #字典的创建方式
    #方式一:
    #面试会考
    #dic = dict((('one',1),('two',2),('three',3)))
    #print(dic)  #{'one': 1, 'two': 2, 'three': 3}
    
    #方式二:
    #dic = dict(one = 1,two = 2,three = 3)#{'one': 1, 'two': 2, 'three': 3}
    #dic1 = dict(name='alex',age=18,sex='男')#{'name': 'alex', 'age': 18, 'sex': '男'}
    #print(dic1)
    
    #方式三:
    dic = {'one':1,'two':2,'three':3}
    print(dic) #{'one': 1, 'two': 2, 'three': 3}
    
    #方式四
    dic = dict(zip(['one', 'two', 'three'],[1, 2, 3])) #拉链操作
    print(dic) #{'one': 1, 'two': 2, 'three': 3}
    
    #方式五
    dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]} #字典推导式
    print(dic) #{'one': 1, 'two': 2, 'three': 3}
    
    #方式六
    dic = dict.fromkeys('abcd','太白')
    print(dic) #{'a': '太白', 'b': '太白', 'c': '太白', 'd': '太白'}
  • 字典的增删改查

    # --encoding:utf-8 --

    """
    Create on 2019/7/26 0026 16:00
    """
    dic = {'name':'taibai','age':18}
    #增
    #直接增加 有则改之,无则增加
    #dic['sex'] = '男'
    #dic['age'] =24 #{'name': 'taibai', 'age': 24}
    #print(dic)

    #setdefault 有则不变,无则增加
    #dic.setdefault('hobby','学习') #{'name': 'taibai', 'age': 18, 'hobbie': '学习'}
    #dic.setdefault('age',48) #{'name': 'taibai', 'age': 18}
    #print(dic)

    #删
    #pop 按照键删除键值对,有返回值
    #设置第二个参数则无论字典中有无此键都不会报错
    #dic.pop('age') #{'name': 'taibai'}
    #ret = dic.pop('age') #18 有返回值
    #ret = dic.pop('hobby','没有此键')
    #print(ret)
    #print(dic)

    #clear 清空
    #dic.clear()
    #print(dic)

    #del
    #del dic['age'] #{'name': 'taibai'}
    #print(dic)

    #改
    #dic['name'] = 'alex' #{'name': 'alex', 'age': 18}
    #print(dic)

    #查
    #print(dic['age'])

    #get
    #l1 = dic.get('hobby','学习') #可以设置返回值
    #print(dic)
    #print(l1)

    #三个特殊
    #keys() #可以转化为列表 可以循环
    #print(dic.keys())#dict_keys(['name', 'age'])
    #print(list(dic.keys()))

    #values() #可以转化为列表 可以循环
    #print(dic.values())#dict_values(['taibai', 18])
    #print(list(dic.values())) #['taibai', 18]

    #items()
    #print(dic.items()) #dict_items([('name', 'taibai'), ('age', 18)])
    #print(list(dic.items())) #[('name', 'taibai'), ('age', 18)]
    #for i,j in dic.items():
    # print(i,j) #name taibai age 18

    #面试题
    a = 18
    b = 12
    a,b = b,a
    print(a,b)

  • 字典的嵌套

02.内容回顾

  • 列表:容器型的数据类型,可以承载大量的数据,有序的数据
    • 增:
      • append 追加(在最后)
      • insert 在指定位置添加
      • extend 迭代着添加
    • 删:
      • pop 按照索引删除,有返回值 默认删除最后一个
      • remove 按照元素删除
      • clear 清空列表
      • del 索引,切片(步长)
    • 改:
    • 查:索引,切片,for循环
  • 元祖:只读列表,拆包
  • range:可以自己控制范围的数字列表,但是它不是列表

03.数据类型的分类

  • 可变(不可哈希)的数据类型:list(列表) dict(字典) set(集合)
  • 不可变(可哈希)的数据类型:str(字符串) bool(布尔值) int(整形) tuple(元祖)

04.相关练习

# --encoding:utf-8 --

"""
Create on 2019/7/26 0026 17:47
"""
'''
dic = {
    'name':'汪峰',
    'age':48,
    'wife':[{'name':'国际章','age':38}],
    'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}

1. 获取汪峰的名字。

2.获取这个字典:{'name':'国际章','age':38}。

3. 获取汪峰妻子的名字。

4. 获取汪峰的第三个孩子名字。


'''
dic = {
    'name':'汪峰',
    'age':48,
    'wife':[{'name':'国际章','age':38}],
    'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}
#1. 获取汪峰的名字。
#k1 = dic.get('name')
#print(k1)
#2.获取这个字典:{'name':'国际章','age':38}。
k2 = dic.get('wife')[0]
print(k2)
#3. 获取汪峰妻子的名字。
#k3 = dic.get('wife')[0]['name']
#print(k3)
#4. 获取汪峰的第三个孩子名字
k4 = dic['children']['girl_three']
print(k4)

# --encoding:utf-8 --

"""
Create on 2019/7/26 0026 17:24
"""
'''
dic1 = {
 'name':['alex',2,3,5],
 'job':'teacher',
 'oldboy':{'alex':['python1','python2',100]}
 }
1,将name对应的列表追加⼀个元素’wusir’。
2,将name对应的列表中的alex⾸字⺟⼤写。
3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
4,将oldboy对应的字典中的alex对应的列表中的python2删除

'''
dic1 = {
 'name':['alex',2,3,5],
 'job':'teacher',
 'oldboy':{'alex':['python1','python2',100]}
 }
#1,将name对应的列表追加⼀个元素’wusir’。
#dic1['name'].append('wusir')
#print(dic1)

#2,将name对应的列表中的alex⾸字⺟⼤写
#dic1['name'][0].capitalize()
#print(dic1)

#3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
# dic1['oldboy']['老男孩'] = 'linux'
# print(dic1)

#4,将oldboy对应的字典中的alex对应的列表中的python2删除
# dic1['oldboy']['alex'].pop(-2)
# print(dic1)


'''
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
请在k3对应的值中追加一个元素 44,输出修改后的字典
请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典

'''
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
#请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
#dic['k4'] = 'v4'
#print(dic)
#请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
#dic['k1'] = 'alex'
#print(dic)
#请在k3对应的值中追加一个元素 44,输出修改后的字典
dic.get('k3').append(44)
print(dic)
#dic['k3'].append(44)
#print(dic)
#请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic['k3'].insert(1,18)
print(dic)

猜你喜欢

转载自www.cnblogs.com/940531gbh/p/11252579.html