首页 > 其他 > 详细

类型与运算三

时间:2019-06-10 18:10:15      阅读:81      评论:0      收藏:0      [点我收藏+]

一、字典(dict)

  1. 格式

    以{}表示,每一项用逗号隔开,内部元素用key:value的形式来保存数据:

    dic{"key":"value","key2":"value2"}

    key:必须是可哈希的(不可变的),并且是唯一的

    value:任意值

    字典是无序的(3.6默认了定义顺序),可变的(可增删改查)

  2. 作用

    2.1 用于存储大量数据,比列表还要大的,但比较消耗内存

    2.2 字典能够将数据与数据进行关联,有明确对应关系时推荐使用字典

    2.3 通过key来查找元素,查询效率高

    2.4 hash算法:key必须时不可变的数据类型

  3. 字典的使用方法

    方法 作用
    1.增
    dic["key"] = "value" 直接用key往里面存数据即可,如果key存在会替换掉原来的value,可用于修改。
    dic.setdefault("key","value") 首先查看要添加的键存不存在,如果不存在,就执行新增;如果存在key,不会执行新增
    2.删
    dic.pop("key") 通过键删除,有返回值,返回的时被删除的值
    del dic["key"] 删除指定键值对
    dic.clear() 清空
    3.改
    dic["key"] = "value" 如果键在字典中存在就修改,不存在就添加
    dic.update(dic2) 将dic2按key添加到dic中,若dic中key存在则替换成dic2中的value,如果key 不存在则直接添加到dic。括号里的字典级别高
    4.查
    dic["key"] 通过键获取值,不能通过值获取键,如果存在key就返回对应的值,如果不存在就报错
    dic.get("key","可制定返回值") 获取,获取值的时候可以指定返回的内容,键不存在的时候不报错
    dic.setdefault("key","value") 首先新增(先看有没有key,如果有就过,如果没有,执行新增),然后根据key把值返回
  4. 相关操作

    4.1 解构

    a = 1
    b = 2
    a,b = b,a
    结果:
    a=2,b=1
    a,_,c = "你好啊"  #字符串解构
    print(a,c)
    结果:
    你 啊
    a,b = ("1","2")   #元组解构
    print(a,b)
    结果:
    1 2
    a,b = ["4","5"]      #列表解构
    print(a,b)
    结果:
    4 5
    a,b = {"a":1,"b":2,}     #字典解构
    print(a,b)
    结果:
    a b

    4.2 dic.keys() 拿到字典的key

    dic.values() 拿到字典的value

    dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"}#对字典的遍历
    print(dic.keys())   # dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表,可以for循环但不能索引
    for key in dic.keys():
        print(key)  # 拿到key
        print(dic[key]) # 拿到value

    4.3 dic.items() 拿到key和value,每一项为一个元组

    dic = {"1":1,"2":2,"3":3,"4":4}
    print(dic.items())
    结果:
    dict_items([('1', 1), ('2', 2), ('3', 3), ('4', 4)])
    dic = {"1":1,"2":2,"3":3,"4":4}
    for item in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
        print(item) # 元组
        print(item[0],item[1])
    结果:
    ('1', 1)
    1 1
    ('2', 2)
    2 2
    ('3', 3)
    3 3
    ('4', 4)
    4 4

    通过key和value解构可写成:

    dic = {"1":1,"2":2,"3":3,"4":4}
    for k, v in dic.items(): #拿到元组类型的键值对,然后进行解构
        print(k,v) 
    结果:
    1 1
    2 2
    3 3
    4 4
    
    dic = {"1":1,"2":2,"3":3,"4":4}
    for i in dic:        # 效率高
        print(i,dic[i])

    4.5 效率问题

    import time
    dic = {"1":1,"2":2,"3":3,"4":4}
    s = '3'
    s = time.time()
    if s in  dic.keys():   #列表  --   [1,2,3,4,5]   中查找s 效率高
        pass
    print(time.time() - s)
    
    s1 = time.time()
    for i in dic:
        if s == i:
            pass
    print(time.time() - s1)

    4.6 enumerate() 枚举

    dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111}
    count = 1                 
    for i in dic:
        print(count,i)
        count += 1
    #直接使用enumerate()    
    for i,k in enumerate(dic,1):  # 其中第二个参数默认不写就是0    -- 枚举
        print(i,k)
    结果:
    1 电脑
    2 手机
    3 耳机
    4 老婆
  5. 字典的嵌套

    wf = {
        "name": "汪峰",
        "age": 48,
        "成名曲": "春天里",
        "wife": {
            "name": "章子怡",
            "age": 39,
            "工作": "演员"
        },
        "children":[
            {"num": "001", "name": "汪一", "hobby": "唱歌"},
            {"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
        ]
    }
    wf['wife']['age'] = wf['wife']['age'] + 10
    print(wf)
    结果:
    {'name': '汪峰', 'age': 48, '成名曲': '春天里', 'wife': {'name': '章子怡', 'age': 49, '工作': '演员'}, 'children': [{'num': '001', 'name': '汪一', 'hobby': '唱歌'}, {'num': '002', 'name': '汪二', 'hobby': '演戏'}]}
    

类型与运算三

原文:https://www.cnblogs.com/yaoqi17/p/10999297.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!