美文网首页Python小推车python学习
Python学习打call第十二天:字典

Python学习打call第十二天:字典

作者: 暖A暖 | 来源:发表于2019-01-27 16:26 被阅读40次

    1.什么是字典

    • 字典就是key-value键值对数据的集合(且key不可重复);

    • 字典是可变的,无序的;

    • 字典中,key必须是可哈希的数据类型;

    2.字典的定义

    • 定义字典可以使用d = dict() 或者 d = {}两种方法;
    d = dict()  #定义字典
    d = {}
    
    • 使用键值对的方式初始化字典;
    d = {'a':1, 'b':2}
    print(d)    #输出:{'a': 1, 'b': 2}
    
    • 使用传参的方式初始化字典;
    d = dict(a=1, b=2)
    print(d)    #输出:{'a': 1, 'b': 2}
    
    • 使用元组的方式初始化字典(比较少见);
    d = dict((('a',1),('b', 2)))
    print(d)    #输出:{'a': 1, 'b': 2}
    
    • 使用字典构造器的构造方法fromkeys() 来通过可迭代对象批量的传值;
    d = dict.fromkeys(range(5), 'hello')
    print(d)    #输出:{0: 'hello', 1: 'hello', 2: 'hello', 3: 'hello', 4: 'hello'}
    

    3.字典的访问

    d = {'a':10, 'b':20}
    
    d.setdefault('c', 30)   # 设置默认值
    
    print(d['a'])    #输出:10
    
    print(d.get('d', None))   #输出:None
    
    print(d)  #输出:{'a': 10, 'b': 20, 'c': 30}
    
    • 字典可以通过key来访问;

    • 使用setdefault()方法来设置默认值(只能加一个新的值,不能覆盖原有值);

    • 使用get()方法通过key来访问字典,当key存在时,返回value值,key不存在时返回则None;

    4.字典修改

    d = {'a':1, 'b':2}
    d.update({'c': '3'})
    print(d)   #输出:{'a': 1, 'b': 2, 'c': '3'}
    
    d['a'] = 10
    print(d)    #输出:{'a': 10, 'b': 2, 'c': '3'}
    
    • 使用update()方法来修改字典;

    • 直接使用key来修改字典;

    5.字典插入

    • 直接使用key来插入;
    d = {'a':10, 'b':20}
    d['c'] = 30
    print(d)   #输出:{'a': 10, 'b': 20, 'c': 30}
    

    6.字典的删除

    d = {'a':10, 'b':20}
    
    • pop:通过pop()方法删除指定key的value;
    d.pop('a',None)
    print(d)   #输出:{'b': 20}
    
    
    • popitem:随机删除任意键值对;
    d.popitem()   #删除任意键值对
    print(d)    #输出:{'a': 10}
    
    • clear:删除字典所以元素;
    d.clear()
    print(d)      #输出:{}
    
    • del:通过del魔术方法删除指定key的value;
    del d['a']
    print(d)     #输出:{'b': 20}
    

    7.字典的遍历

    d = {'a':10, 'b':20}
    
    # key的遍历
    for key in d:
        print(key)
    for key in d.keys():
        print(key)
    
    # value的遍历
    for key in d:
        print(d[key])
    for key in d.keys():
        print(d.get(key))
    
    # key/value遍历
    for item in d.items():
        print(item)
    for key,value in d.items():
        print(key, value)
    
    • 字典可以使用for来遍历的;

    • for循环可以单独遍历key,单独遍历value,key和value一起遍历;

    • 单独遍历key或者value时需要用到keys;

    • key和value一起遍历需要是用到items;

    8.标准库中的字典

    • 默认字典:defaultdict,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,默认字典初始化什么类型,返回值对应该类型的空值 (如int返回0,str返回空字符串);
    from collections import defaultdict
    dict1 = defaultdict(int) # 默认值是0
    print(dict1[1])  #输出:0
    print(dict1[2])  #输出:0
    
    dict2 = defaultdict(set) # 默认的是set( )
    print(dict2[1])    #输出:set()
    print(dict2[2])     #输出:set()
    
    
    dict3 = defaultdict(str) # 默认是空字符串
    print(dict3[1])
    
    dict4 = defaultdict(list) # 默认是空列表[]
    print(dict4[1])   #输出:[]
    
    
    • 有序字典:OrderedDict,记录了key插入的顺序,也就是让无序的字典变为有序;
    from collections import OrderedDict
    import random
    d = {'赵': 1, '钱': 2, '孙': 3, '李': 4}
    keys = list(d.keys())  #把键值存入列表中
    print(keys)   #输出:['赵', '钱', '孙', '李']
    
    random.shuffle(keys)  #随机打乱列表中的keys值
    print(keys)
    
    order_d = OrderedDict()   #创建一个有序字典对象
    for key in keys:
        order_d[key] = d[key]
    print(order_d.keys())
    

    本文参考自侠课岛(9xkd.com)Python同学计划

    相关文章

      网友评论

        本文标题:Python学习打call第十二天:字典

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