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 #

    print(dic)

    setdefault 有则不变,无则增加

    dic.setdefault('hobby','学习') #

    dic.setdefault('age',48) #

    print(dic)

    pop 按照键删除键值对,有返回值

    设置第二个参数则无论字典中有无此键都不会报错

    dic.pop('age') #

    ret = dic.pop('age') #18 有返回值

    ret = dic.pop('hobby','没有此键')

    print(ret)

    print(dic)

    clear 清空

    dic.clear()

    print(dic)

    del

    del dic['age'] #

    print(dic)

    dic['name'] = 'alex' #

    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)
posted @ 2019-07-26 20:09  病毒正在入侵...中  阅读(131)  评论(0编辑  收藏  举报