五、字典

字典的初识

  • why
    • 列表可以存储大量的数据,数据之间的关联性不强
      • ['太白',18,'男','大壮',3,‘男’]
      • 列表的查询数据比较慢
  • what:容器型数据类型 dict
  • how:
    • 数据类型的分类(可变与不可变)
      • 可变(不可哈希)的数据类型:list dict set
      • 不可变(可哈希)的数据类型:str bool int tuple
    • 字典:{}括起来,以键值对形式存储的容器型数据类型
      • dic = {'太白':
             {'name': '太白金星','age': 18, 'sex': '男'},
         'python22期': 
             ['朱光亚', '大壮', '雪飞', '岑哥'],
         }
  • 键必须是不可变的数据类型 int,str ( bool tuple 几乎不用) 唯一的
  • 值可以是任意数据类型 对象
  • 字典 3.5x 版本之前(包括3.5)是无序的
  • 3.6x 会按照初次建立字典的顺序排列,学术上不认为是有序的
  • 3.7x 以后都是有序的
  • 字典的优点: 查询速度非常快 存储关联性的数据
  • 缺点 : 以空间换时间
  • 字典的创建方式

    # 面试会考
    # 方式一
    dic = dict((('one', 1), ('two', 2), ('three', 3)))
    print(dic) # {'one': 1, 'two': 2, 'three': 3}
    # 方式二
    dic = dict(one = 1,two = 2,three = 3)
    print(dic)
    # 方式三
    dic = dict({'one': 1, 'two': 2, 'three': 3})
    print(dic)

  • 验证字典的合法性

    dic = {[1,2,3]:'alex',1:666} # 键要不可变的数据类型
    print(dic)
    dic = {1:'alex',1:'太白',2:'wusir'} # 键要唯一
    print(dic)

  • 字典的增删改查

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
    # 增
    # 直接增加 有则改之,无则增加
    # dic['sex'] = '男'
    # dic['age'] = 23 # 改
    # print(dic)

    # setdefault 有则不变,无则增加
    dic.setdefault('hobby')
    dic.setdefault('hobby','球类运动')
    dic.setdefault('age',45)
    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']
    # del dic['age1']
    print(dic)

    # 改
    # dic['name'] = 'alex'

    # 查
    # print(dic['hobby_list'])
    # print(dic['hobby_list1'])

    # get ***
    l1 = dic.get('hobby_list')
    l1 = dic.get('hobbt_list1','没有此键') # 可以设置返回值
    print(l1)

    # 三个特殊的
    # keys() values() items()
    # print(dic.keys(),type(dic.keys()))
    # 可以转化成列表
    print(list(dic.keys()))
    for key in dic.keys():
    print(key)

    for key in dec:
    print(key)

    # values()
    print(dic.values())
    for value in dic.values():
    print(value)
    # items()

    for key,value in dic.items():
    print(key,value)

    a,b = ('name','太白')
    print(a,b)

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

  • 相关练习题

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

    # print(dic['k3'])
    # l1 = dic.get('k3')
    # print(l1)
    # dic.get('k3').append(44)
    # print(dic)
    # 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
    dic["k3"].insert(1,18)
    print(dic)

  • 字典的嵌套

    dic = {
    'name': '汪峰',
    'age': 48,
    'wife': [{'name': '国际章', 'age': 38},],
    'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'}
    }

    # 1. 获取汪峰的名字。
    # print(dic['name'])
    # 2.获取这个字典:{'name':'国际章','age':38}。
    # print(dic['wife'][0])
    # 3. 获取汪峰妻子的名字。
    # print(dic['wife'][0]['name'])
    # 4. 获取汪峰的第三个孩子名字。
    # print(dic['children']['girl_three'])

转载于:https://www.cnblogs.com/shenkaiqi/articles/10815808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值