zoukankan      html  css  js  c++  java
  • day_5


    一.回顾上节课内容:
    列表: list [元素,元素]
    索引: 从0开始
    切片: 顾头不顾尾
    增: append() insert() extend()
    删:pop() remorve() clean() del
    改:索引修改 切片修改
    查:for循环

    tuple:元祖 (元素,元素...)#如果只有一个元素,在第一个元素后面添加一个逗号
    只读列表 能查 不能增删改

    range():
    1.只有一个参数:0-xx
    2.两个参数: 从xx-xx
    3.三个参数: 从xx-xx,每xx去1个

    二.作业(重点)

    三.今日主要内容:

    1.dici字典
    {} 表示: 每次保存两次数据 key:value 键值对

    {"大阳哥":"赵阳","sylar":"邱彦涛","强强":"张强强"}
    value: 任意的数据类型
    key: 必须是可哈希(hash)的 (不可变的)

    字典不能切片

    # 合法
    dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帅哥', '美女'], (1, 2, 3): '麻花藤'}
    print(dic[123])
    print(dic[True])
    print(dic['id'])
    print(dic['stu'])
    print(dic[(1, 2, 3)])
    # 不合法
    # dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key
    # dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key
    dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key

    dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进行切片工作.
    它只能通过key来获取dict中的数据

    已知的可哈希(不可变)的数据类型: int, str, tuple, bool
    不可哈希(可变)的数据类型: list, dict, set


    2.dict 增删改查
    1.增加: (1).添加的内容可以直接使用key来进行添加 (2).键值对

    # 新增
    # dic = {}
    # dic['jay'] = "周杰伦" # {'jay': '周杰伦'}
    # dic["jay"] = "王力宏" # {'jay': '王力宏'}
    # # 如果key存在.执行的是修改操作. 如果key不存在. 执行的是新增
    # print(dic)
    # dic.setdefault("王二小") # 一个参数放的是key
    # dic.setdefault("王二小", "弹溜溜") # 如果key不存在. 新增
    # dic.setdefault("王二小", "上片机") # 如果存在key. 不执行任何操作
    # print(dic)

    2.删除: pop(), del, clean, popitime()

    pop: # 返回value

    语法: ret = dic.pop("jay")
    print(ret)

    # dic = {'朱高炽':None, "朱元璋":"和尚", "诸葛亮":'不是个和尚'}
    # ret = dic.pop("朱棣") # 返回value
    # print(ret)
    # print(dic)

    del: 缺点:没有返回 ; 如果没有 就是新增

    语法: del dic["jay"]
    print(dic)
    # 随机删除


    clear: #清空
    # 清空字典中的所有内容
    dic.clear()


    popitem: #随机删# 随机删除.
    # ret = dic.popitem() # 随机删.
    # print(ret)


    3.修改: 用key改,也可以进行update
    update : #把dic1的内容更新到dic中,如果key重名,则修改替换,如果不存在key,则新增.

    语法: dic = {"id": 123, "name": 'sylar', "age": 18}
    dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
    dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
    print(dic)
    print(dic1)

    eg... dic1 = {"name":'朱高炽','age':58, '朱祁镇':18}
    dic2 = {"name":'朱由检','年轻':18, '朱棣':55, '张无忌':'赵敏'}
    # update: 把dic2更新到dic1, dic1中如果存在了dic2中的key.会修改(覆盖), 如果不存在. 新增这个key:value
    dic1.update(dic2)
    print(dic1)
    print(dic2)

    4.查询: 用key查找

    print(dic['name'])
    # print(dic['sylar']) # 报错
    print(dic.get("ok"))
    print(dic.get("sylar")) # None
    print(dic.get("sylar", "牛B")) # 牛B

    # dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
    # print(dic['朱见深']) # KeyError: '朱见深' key不存在
    # print(dic.get("朱祁镇")) # dic.get("朱祁镇") == dic['朱祁镇']
    # # get(key, default)
    # print(dic.get("朱见深", "查无此人")) # 返回none. 不存在key

    5.其他相关操作:
    1. key() 返回所有的key的列表
    错误 lst = [1, 2, 5, 8]
    print(lst[5]) # list index out of range

    语法: print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什么.当成list来用就行
    for key in dic.keys():
    print(key)

    输出keys dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
    print(dic['朱见深']) # KeyError: '朱见深' key不存在
    print(dic.get("朱祁镇")) # dic.get("朱祁镇") == dic['朱祁镇']
    # get(key, default)
    print(dic.get("朱见深", "查无此人")) # 返回none. 不存在key

    2.values 返回所有的value的列表

    语法: print(dic.values()) # dict_values([123, 'sylar', 18, '科比']) 一样. 也当list来用
    for value in dic.values():
    print(value)

    输出values dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
    print(dic.keys()) # dict_keys(['朱允炆', '朱祁镇', '朱棣']) 把这个当成list来看就可以了
    for el in dic.keys():
    print(el) # 拿到了key.就可以拿value
    print(dic.get(el)) # value

    3.items 返回所有键值的元祖表示形式

    print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 这个东西也是list. 只不过list中装的是tuple
    for key, value in dic.items(): # ?? 这个是解构
    print(key, value)

    解构:

    a, b = (1, 5)
    print(a)
    print(b)

    k,v = dic.popitem() # dic.popitem()的结果是一个元组. 元组可以直接解构成两个值
    print(k)
    print(v)

    dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
    print(dic.items())
    # 从dic中获取到list列表. 列表中每一项都是一个元组(key,value) 通过解构可以直接把key和value获取到
    for k,v in dic.items():
    print(k)
    print(v)


    dic[] # key error 如果括号里的不在括号里面,就会报错!
    dic.get() #dic.get....print(dic.get("朱祁镇")) # dic.get("朱祁镇") == dic['朱祁镇']

    三.字典的嵌套

    dic1 = {
    "name": "汪峰",
    "age": 18,
    "wife": {
    "name": '章子怡',
    "age": 28
    },
    "children": ['第一个毛孩子', '第二个毛孩子'],
    "desc": '峰哥不会告我吧. 没关系. 我想上头条的'
    }


    print(dic1.get("wife").get("name"))
    print(dic1.get("children"))
    print(dic1.get("children")[1])


    练习:
    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删除。

  • 相关阅读:
    对WM_NCHITTEST消息的了解+代码实例进行演示(消息产生消息,共24个枚举值)
    windows 下,用CreateWaitableTimer SetWaitableTimer 创建定时器(用轮询的办法保持高精度)
    YUI的模块化开发
    内存管理
    WCF从零学习之WCF概述(一)
    MVC编辑状态两个DropDownList联动
    HashMap的工作原理
    初探performance.timing API
    异步编程
    Nikola的5项依赖注入法则
  • 原文地址:https://www.cnblogs.com/qianzhewoniuqulvxing/p/9142808.html
Copyright © 2011-2022 走看看