zoukankan      html  css  js  c++  java
  • python基础五-字典

    字典
    :字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据。
    同样他也是python中唯一的映射类的数据类型。
    数据类型的分类:
    可变的(不可哈希)数据类型:list,dict
    不可变的(可哈希的)数据类型:str,int,bool,tuple
    dic = {"name":"jin","age":18,"sex":"male"}
    键值对的形式存在的, 键: 值
    字典的键KEY必须是不可变的数据类型。(工作中:都是由 数字,或者str组成)
    字典的值value是任意数据类型。
    优点:
    字典可以存储大量的数据,关系型数据。
    查询速度快。
    python3.5之前包括3.5版本,字典是无序的。
    python3.6开始,是有序的

    字典的增删改查
    字典创建方法
    1.直接创建
    dic ={1:2,3:4}
    print(dic)

    2.dict()方法
    dic2 = dict({'a':'b'})
    print(dic2)

    3.dict--关键字形式       

    复制代码代码如下:

     代码比较少,但键必须为字符串型。常用于函数赋值
     D3 = dict(name='Bob',age=45)  

    4.dict--键值序列 

    如果需要将键值逐步建成序列,则此方式比较有用,常与zip函数一起使用
     D4 = dict([('name','Bob'),('age',40)])  
    复制代码代码如下:
     D = dict(zip(('name','bob'),('age',40)))  
     
    5. dict.formkeys()方法
    dic3 = dict.fromkeys([1,2,3,4],[9,8,7,6])     #fromkeys(key,value)key为可迭代对象teriable,vuale可以是任意值
    但vuale为可变数据类型(list,dict)则生产的字典每个key都指向这个可变对象,
    只要有一个值发生改变,全部字典的值也全部发生改变
    print(dic3)         

    增:
    1.直接增加(如果dic(key)中的key不存在则新增,如果字典中该key存在则修改)
    dic ={}
    dic['a'] =1
    print(dic)
    2.dic.setdefault(key,default) 如果该key不存在则新增值为default,如果该key存在则不做任何操作
    dic.setdefault('b',2)
    dic.setdefault('a',6)
    print(dic)

    删:
    dic = {1:2,3:4,5:6,7:8}
    1.del dic[key] 根据key键删除字典中的键值对,或者直接不跟dic键删除整个字典(删除整个对象)
    del dic[5]
    del dic
    print(dic)

    2.dic.pop(key,default)根据key键删除字典中的键值对,有返回值,如果key存在则返回key对应的值。如果key不存在则返回default
    当删除的key不在时默认又没有加default参数则会报错
    print(dic.pop(1))
    print(dic.pop('r'))
    print(dic.pop('r',None))

    3.dic.popitem()在python3.5之前是随机删除,在pytho3.6之后是默认删除最后一个键值对,有返回值,返回值为一个元祖(key,value)
    print(dic.popitem())
    print(dic)

    4.clear(),清空字典
    dic.clear()
    print(dic)



    dic = {1:2,"a":4,5:6,7:8}
    1.dic[1] ='a'直接修改
    dic[1] ='a'
    print(dic)

    2.dic.update(kwargs=)kwargs可以是一个字典,如果字典则用该字典跟新原字典;kwargs还可以是一组键值 key='value'如果key存在则跟新,
    不存在则新增,但这种方式新增key只能是一个变量型
    dic.update(a='2',b="90",_=1)
    print(dic)

    dic = {"name":"jin","age":18,"sex":"male"}
    # dic2 = {"name":"alex","weight":75}
    # dic.update(dic2) # 将dic2中的所有键值对覆盖并添加到dic中,dic2 不变。
    # print(dic)
    # print(dic2)
    dic.update(a='666',b='222',name='taibai')
    print(dic)

    查:
    dic = {1:2,"a":4,5:6,7:8}
    1.直接查询dic[key]
    print(dic['a'])

    2.dic.get(key,default) 通过key查询值,当key存在返回该key对应的value;当key不存在则返回none,若果加defalut则返回default的值
    print(dic.get('a'))
    print(dic.get(8))
    print(dic.get(8,'空值'))

    3.dic.keys()查询dic的键,可以转化为list
    print(list(dic.keys()))

    4.dic.values()查询dic的值,可以转化为list
    print(list(dic.values()))

    5.dic.items()查询dic的键值对,可以转化为list
    print(list(dic.items()))

    分别赋值
    a,b = 10,20
    print(a,b)
    a,b = [10,20]
    print(a,b)
    a,b = [(1,2),(3,4)]
    print(a,b)
    a = 10
    b = 20
    a,b = b,a
    print(a,b)

    for i in dic.items():
    '''
    i = ('name', '太白')
    i = ('age', 18)
    ....
    '''
    print(i)

    for k,v in dic.items():
    '''
    k,v = ('name', '太白')
    k,v = ('age', 18)
    ....
    '''
    print(k,v)

    for i in dic:
    print(i)
    dict
    print(len(dic))

    字典嵌套实例
    dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
    1: {'name': 'taibai', 'age': 18, 'sex': '男'},
    (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
    }
    1,给 name_list对应的列表追加一个值: 司徒大人.
    print(dic['name_list'])
    dic['name_list'].append('司徒大人')
    print(dic)

    2,将name_list对应的alex 变成全部大写.
    dic['name_list'][1] = 'ALEX'
    dic['name_list'][1] = dic['name_list'][1].upper()
    print(dic)
    3, 将1对应的字典添加一个键值对: weight : 75
    print(dic[1])
    dic[1]['weight'] = 75
    print(dic)
    4,将1 对应的字典的name键对应的名字taibai 换成alex
    dic[1]['name'] = 'alex'
    print(dic)
    5,将 {'ip': '192.168.1.1', 'port': 3306} 此字典的port键值对删除.
  • 相关阅读:
    [Apio2014]回文串
    省队集训day6 C
    省队集训day6 B
    省队集训Day3 light
    省队集训Day3 tree
    多串匹配
    ubuntu卸载福昕阅读器
    greenlet
    python multithread task_done
    mysql参数调优
  • 原文地址:https://www.cnblogs.com/qilin610/p/9465174.html
Copyright © 2011-2022 走看看