zoukankan      html  css  js  c++  java
  • Day 5 字典以及字典的用法

    拓展
    li = ['alex','wusir','taibai']
    print('_'.join(li))
    拼接的符号''.join(可迭代对象)

    字典--dict
    字典:用于存贮数据,存贮大量数据
    优点:速度快(快于列表)
    能将数据之间关联起来

    定义一个字典
    dict = {'1':10,'2':20,'张与':40}
    字典中逗号分割开的叫做一个元素'1'(键):10(值) 键值对
    字典的键:
    可哈希的---不可变的数据类型--避免哈希冲突,使用了开放群值法
    不可哈希---可变的数据来兴
    要求唯一--如果有重复的后边的值前面的值覆盖
    字典的值:
    可以任意

    合法
    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

    注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据


    dic = {'张与':[1,2,3]}
    dic['李文虎'] = 89
    print(dic)#直接添加,暴力添加

    dic = {'张与':[1,2,3]}
    dic.setdefault('李文虎','89')
    print(dic)

    dic = {'张与':[1,2,3],'李文虎':'89'}
    dic.setdefault('李文虎','100')
    print(dic)
    # 李文虎这个键去字典查询,如果不存在执行添加,如果存在就不添加。

    dic = {'张与':[1,2,3],'李文虎':'89'}
    print(dic.setdefault('王菲'))
    print(dic)
    89 存在
    None 不存在 执行添加

    删除
    dic = {'张与':[1,2,3],'李文虎':'89'}
    del dic['张与']
    print(dic)#通过字典的键删除键值对

    dic = {'张与':[1,2,3],'李文虎':'89'}
    print(dic.pop('张与'))
    print(dic)#通过字典的键删除键值对,有返回值-被删除的值

    dic = {'张与':[1,2,3],'李文虎':'89'}
    dic.clear()
    print(dic)


    dic = {'张与':[1,2,3],'李文虎':'89'}
    dic['张与'] ='asd'
    print(dic)#字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
    有则改,无则加
    例:
    dic = {'张与':[1,2,3],'李文虎':'89'}
    dic.update({'1':3,'5':4,'李文虎':100})
    print(dic)

    dic = {'张与':[1,2,3],'李文虎':'89'}
    dic1 = {'1':3,'5':4,'李文虎':100}
    dic1.update(dic)
    print(dic1)#update()的字典级别高于update前面的字典


    dic = {'1':3,'5':4,'李文虎':100}
    for i in dic:
    print(i)#获取的是每个键值对的键

    dic = {'1':3,'5':4,'李文虎':100}
    print(dic.get('李文虎'))

    dic = {'1':3,'5':4,'李文虎':100}
    print(dic.get('王菲'))
    通过键获取值,如果不在字典中返回NONE

    dic = {'1':3,'5':4,'李文虎':100}
    print(dic['李文虎'])

    dic = {'1':3,'5':4,'李文虎':100}
    print(dic['王菲'])
    通过键获取值,如果不在字典中报错

    其它操作

    dic = {'1':3,'5':4,'李文虎':100}
    for i in dic:
    print(i,dic.get(i))

    高仿列表
    dic = {'1':3,'5':4,'李文虎':100}
    print(dic.keys())
    高仿列表---dict_keys(['1', '5', '李文虎'])
    可实现功能
    for循环(可实现)
    dic = {'1':3,'5':4,'李文虎':100}
    for i in dic.keys():
    print(i)

    索引查询(不可实现)
    dic = {'1':3,'5':4,'李文虎':100}
    print(dic.keys[0])

    迭代添加新列表(可实现)
    lst = []
    dic = {'1':3,'5':4,'李文虎':100}
    for i in dic:
    lst.append(dic[i])
    print(lst)

    获取字典中所有的值(可实现)
    dic = {'1':3,'5':4,'李文虎':100}
    print(dic.values())

    获取字典中所有的键值对(可实现)
    dic = {'1':3,'5':4,'李文虎':100}
    print(dic.items())

    for循环获取字典中所有的键值对(可实现)
    dic = {'1':3,'5':4,'李文虎':100}
    for i in dic.items():
    print(i[0],i[1])

    解构
    a = 10
    b = 20
    a,b = b,a
    print(a,b)

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

    a,b = [1,2]
    print(a)
    print(b)

    a,b = (3,4,5)
    print(a,b)#报错,没有一一对应

    a,_,b = (3,4,5)
    print(a,b)#等号后边的值和前面的变量名一一对应

    a = 10,12 #本质是一个元组
    print(a)

    a,b = '23'
    print(a,b)

    a,b = {'1':'a','2':'b'}
    print(a,b)

    dic = {'1':3,'5':4,'李文虎':100}
    for k,v in dic.items():
    print(k,v)

    字典的嵌套
    dic = {1001:['a','b']
    1002:{'c':{'前期1':['大烧饼’],'前妻2':['熊大','熊二'],'国际章':'rose'}},
    1003:{'陈冠希':['啊娇','啊撒','张柏芝']},
    1004:{'韦小宝':[{'教主夫人':{'教主'}},{'阿珂':'刺客'},{'双儿':'天地会'},{爱新觉罗建宁:公主}]}
    }
    print(dic[1004]['韦小宝'][0]['教主夫人'][0])

    总结
    字典--dict
    无序,可变的
    键:使用不可变数据类型(可哈希),键是唯一的
    值:可以任意


    dic['键']='值'
    dic.setdefault('键','值')#存在不添加

    删除
    del dic['键']
    dic.pop['键']
    dic.clear()


    dic['键']='值'
    dic.update('要更新的字典')


    for循环查询的是字典的键
    get('键')#存在返回字典中键对应的值,不存在返回NONE
    dic['键']#存在返回字典中键对应的值,不存在报错

    其它操作
    keys---获取字典中所有的键,存放在一个高仿列表中
    values--获取字典中的所有值,存放在一个高仿的列表中
    items--获取字典中所有键和值 存放在一个高仿的列表中(元组第一个为键,第二个为值)

    解构

    a = 10
    b = 20
    a,b = b,a

    字典的嵌套
    查找的时候一层一层通过键进行查找键

  • 相关阅读:
    爬虫笔记:PyQuery模块(七)
    25丨固若金汤的根本(下):数字签名与证书
    爬虫笔记:Beautiful Soup 使用(六)
    24丨固若金汤的根本(上):对称加密与非对称加密
    爬虫笔记:requests模块使用(四)
    五安全篇(7讲)23-TLS又是什么?
    爬虫笔记:http请求详解(三)
    22丨冷链周转:HTTP的缓存代理
    python中expandtabs()函数的用法
    Python全栈工程师(while、占位符)
  • 原文地址:https://www.cnblogs.com/zhuzhizheng/p/11167070.html
Copyright © 2011-2022 走看看