美文网首页
字典dict

字典dict

作者: 星辰_1c3b | 来源:发表于2019-03-19 00:00 被阅读0次

    简介

    字典输出是无序的(python3.5以下是无序,3.6以上是有序的)没有索引,只有key值
    key值只能是可哈希的数据类型,也就是不可修改的数据类型:int,str,元组,
    value值则可以是任意类型的值,不可哈希或可哈希均可
    注意:不要循环字典删除字典元素,会报错

    info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
    print(info)#打印出来是无序的
    print(info["001"])#输入key值就可以找到对应的值
    

    新增

    如果key值存在就是修改,没有就是新增一条

    info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
    info["001"]="张三"#修改值,
    info["sex"]="man"#新增内容
    print(info)
    》》》{"001":"张三",'002':'lisi',"003":"wangwu","sex":"man"}
    
    info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
    info.setdefault("weight",130)#字段如果没有这个key,则增加,默认值是None
    info.setdefault("002","老刘")#字典如果已经有key,则不变
    print(info)
    》》》{"001":"zhangsan",'002':'lisi',"003":"wangwu","weight":130}
    

    删除

    del 内置方法,可以删除字典,列表,元组等等,想删谁就删谁

    del info["001"]#删除某个值
    del info#删除整个字典,字典都不存在了
    
    info.clear()#字典清空,但是字典还是存在的
    
    info.pop("001")#()是必填项,key值,且有返回值,返回删除的这个key对应的value值
    info.pop('不存在的','这是提示内容')#如果删除的值不存在,也就是'不存在的',不加后面的"这是提示内容",会报错,加了这个内容就会提示这些内容出来
    print (info)
    
    info.popitem()#()不需要填,随机剔除一个,有返回值,返回元组,就是删除的键值
    print(info)
    
    #循环字典元素时,进行删除,会直接报错,与列表list雷同
    dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
    for i in dic:
        if 'k' in i:
            del dic[i]
    》》》Traceback (most recent call last):
        for i in dic:
    RuntimeError: dictionary changed size during iteration
    
    dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
    #可以新建字典,将剩余键值对加到新字典中
    dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
    dic1={}
    for i in dic:
        if 'k' not  in i:
            dic1[i]=dic[i]
    print(dic1)
    》》》{'v1': 'b1', 'v2': 'b2'}
    #也可以先把键加到列表,再循环列表,对字典进行删除
    dic={"k1":"a1","k2":"a2","v1":"b1","v2":"b2"}#删除key值中带k的键值对
    lis=[]
    for i in dic:
        if 'k'  in i:
            lis.append(i)
    for i in lis:
        del dic[i]
    print(dic)
    》》》{'v1': 'b1', 'v2': 'b2'}
    

    修改

    dic={"name":"张三","sex":"男","age":"22"}
    dic["name"]="李四"#直接根据key值进行修改
    print(dic)
    》》》{'name': '李四', 'sex': '男', 'age': '22'}
    
    dic={"name":"张三","sex":"男","age":"22"}
    dic1={"name":"王五","height":"180"}
    dic1.update(dic)#将另一个字典直接更新在本字典,本字典有相同的key会被覆盖,没有的会新增
    print(dic1)
    》》》{'name': '张三', 'height': '180', 'sex': '男', 'age': '22'}
    

    查找

    info = {"001":"zhangsan",'002':'lisi',"003":"wangwu"}
    #确定存在key值时用以下方法,否则不要用
    print(info["002"])#[]内的值存在时,是不会报错的,不存在就会报错
    
    #不确定是否存在key值时,用.get()方法,不会报错,不存在时,默认返回None,可以设置返回值,较安全
    print(info.get("005"))
    print("005"in info)#判断"005"是否存在字典info里面,都是用key值判断
    

    其他

    dic={"name":"张三","sex":"男","age":"22"}
    
    print(type(dic.keys()),dic.keys())#输出的结果是列表,key的列表
    》》》<class 'dict_keys'> dict_keys(['name', 'sex', 'age'])
    
    print(type(dic.values()),dic.values())#输出的是value的列表
    》》》<class 'dict_values'> dict_values(['张三', '男', '22'])
    
    print(type(dic.items()),dic.items())#输出的是键值对的列表,列表里面是元组,key_value的元组
    》》》<class 'dict_items'> dict_items([('name', '张三'), ('sex', '男'), ('age', '22')])
    
    dic={"name":"张三","sex":"男","age":"22"}
    
    for i in dic:#默认获取到key值,与加key值是一样的
        print(i)
    for i in dic.keys():#与默认的一致,不加key值是一样的
        print(i)
    》》》
    name
    sex
    age
    
    for i in dic.values():#获取到字典的value值
        print(i)
    》》》
    张三
    男
    22
    
    for i in dic.items():#获取到key和value组成的元组
        print(i)
    》》》
    ('name', '张三')
    ('sex', '男')
    ('age', '22')
    
    for i,j in dic.items():#获取到key和value的字符串
        print(i,j)
    name 张三
    sex 男
    age 22
    》》》
    

    相关文章

      网友评论

          本文标题:字典dict

          本文链接:https://www.haomeiwen.com/subject/ebxwmqtx.html