美文网首页
Python字典详解(dict)

Python字典详解(dict)

作者: 奇遇Python | 来源:发表于2019-11-05 20:55 被阅读0次

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map。

    字典demo

    dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': [1,2,3]}
    

    1.基本格式

    a = {key1 : value1, key2 : value2 }

    2.字典的键(key)必须不可变(如:字符串,数字,元组),值(key)可以为任意数据类型

    a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11,22)}

    3.字典是无序的,每次执行打印,顺序都会发生改变

    实践才是真理,自己动手试试吧

    4.根据键(key)或值(value)取出对应的值(value)或键(key) & for 循环

    #返回关键字的值
    b = d['a'] 
    #将值关联到键值K上
    d['a'] = '11' 
    #键值key是否在d中,是返回True,否则返回False
    key in a
    #删除指定键值对
     del d[k] 
    

    5.字典的函数

    dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
    #1.type(dict)
    #查看数据类型
    type(dict1)
    #输出结果为:<class 'dict'>
    #2.str(dict)      
    #输出字典可以打印的字符串表示
    str(dict1)
    输出结果为:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
    #3.len(dict)
    #返回字典中 键:值对 的数量
    len(dict1)
    输出结果为:5
    
    6.字典的方法

    dict1 ={'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}

    • 6.1.删除
    del dict1['a']    # 删除元素 a
    print(dict1)      # 打印结果:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
    dict1.clear()  # 清空字典
    print(dict1)          # 打印结果:{}
    del dict1    # 删除字典
    
    6.2.items()方法,循环获取key和value
     # 用items方法 k接收key ,v接收value
    for k, v in dict1.items():
        print(k, v)
    
    6.3.keys()方法,循环获取所有key
     # 循环所有的key
    for item in dict1.keys():  
        print(item)
    
    6.4.values()方法,循环获取所有value
    # 循环所有的values 
    for item in dict1.values():  
        print(item)
    
    6.5.copy(浅拷贝)
    dict2 = dict1.copy()
    print ("新复制的字典为 : ",dict2)
    
    6.6.fromkeys() 创建一个新字典,fromkeys(args, kwargs) 以args中元素做字典的键,kwargs为字典所有键对应的初始值
    new_dict1= ('a', 'b', 'c')
    dict1 = dict.fromkeys(new_dict1)
    print(dict1)
    print("新的字典 : %s" % str(dict1))
    dict1 = dict.fromkeys(new_dict1, 8)
    print("新的字典 : %s" % str(dict1))
    #打印结果:
    #新的字典 : {'a': None, 'b': None, 'c': None}
    #新的字典 : {'a': 8, 'b': 8, 'c': 8}
    
    6.7.get()方法根据key获取值 get(self, k, d=None) 参数:k:待操作的键(key), d:默认为None,在获取键的时候,如果不存在就返回 None 或指定什么就返回什么
    a = dict1.get('a')
    print('key存在时:', a)
    d = dict1.get('d')
    print('key不存在时:', d)
    f = dict1.get('d', 123)
    print("key不存在时并指定返回值:", f )
     
    #打印结果为:
    #新的字典 : {'a': 8, 'b': 8, 'c': 8}
    #key存在时: 8
    #key不存在时: None
    #key不存在时并指定返回值: 123
    
    6.8.pop()方法删除指定的key,pop(self, k, d=None) 参数: k:待删除的key d:如果待删除的key,则返回None ,或指定什么返回什么
    a = dict1.pop('a')
    print('key存在时:', v)     # key存在时: 18  
    a1 = dict1.pop('a')
    print('key不存在时:', v1)     # key不存在时报错
    a2 = dict1.pop('Hour', 123)
    print("key不存在时并指定返回值:", a2)  
    # key不存在时并指定返回值: 123
    
    6.9.popitem()方法,随机删除一个键值对
    v1 = dict1.popitem()
    k, v = dict1.popitem()
    print(v1, k, v)  
     # 打印结果:('c', 8) b 8
    
    6.10.setdefault 方法,给字典设置(增加)新的键,存在就不设置(获取当前key对应的值),不存在就设置并返回当前key对应的值 setdefault(self, k, d=None) 参数:k:待设置(添加)的key   d:默认为空,可以指定value值
    v = dict1.setdefault('a', '11')    # 如果待加入的key跟字典内重复,则不会添加
    print(dict1, v)   # 打印结果: {'a':11, 'b': 8, 'c': 8} 11
    
    6.11.update方法 ,更新字典 update(self, E=None, **F)
    d12.update({'a':11, 'b': 8, 'c': 10})    # 第一种写法
    # d12.update(Year=2019, Day=20, Hour=10)   # 第二种写法
    print(d12)  
    # 打印结果:{'Year': 2019, 'Month': 3, 'Day': 20, 'Hour': 10}  
     # 已存在的key就覆盖,不存在的key就添加进字典
    

    7.字典对比

    dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    dict2 = {'a': 1, 'b': 2, 'c': 4, 'f': 5}
    # 同一元素内容不同dict1与dict2不同(key,value)
    differ = set(dict1.items()) ^ set(dict2.items())
    print(differ)
    #{('c', 4), ('f', 5), ('c', 3), ('d', 4)}
    diff = dict1.keys() & dict2
    diff_vals = [(k, dict1[k], dict2[k]) for k in diff if dict1[k] != dict2[k]]
    print(diff_vals)
    #[('c', 3, 4)]
    #获取相同元素(key,value)
    same = dict1.items() & dict2.items()
    print(same)
    # {('b', 2), ('a', 1)}
    #获取相同key
    same_key = dict1.keys() & dict2.keys()
    print(same_key)
    # {'c', 'b', 'a'}
    #key dict1不在dict2当中
    diff_key = dict1.keys() - dict2.keys()
    print(diff_key)
    

    相关文章

      网友评论

          本文标题:Python字典详解(dict)

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