美文网首页
【Python】字典dict

【Python】字典dict

作者: Natsuka | 来源:发表于2018-08-23 21:45 被阅读14次
    字典特点
    • {}来表示,按照key:value来表示字典中的元素,其中key是键,value是值,key-value就是键值对。同样的,可以申明一个字典变量。
    fruit = {"apple":1,"pear":2,"orange":3}
    print(fruit) # 结果为:{'apple': 1, 'pear': 2, 'orange': 3}
    
    • 键值对,必须共同出现,不能只有一个
    • key必须是字符换,value可以是任意对象,同理list(数值,字符串,序列,字典)
    • 字典是一个无序集合。序列由于没有key来做对应,所以以顺序来对应值。序列有顺序,字典没有!
    • key是唯一的。
    dic = {'a':1,'a':2}
    print(dic) #结果为:{'a': 2}
    
    dic1 = {'a':1,'b':2}
    dic2 = {'b':22,'c':3}
    dic1.update(dic2) # 合并字典
    print(dic1) #结果为:{'a': 1, 'b': 22, 'c': 3}
    
    • 可以任意添加、删减元素;可以嵌套,也就是字典就包含字典。
    dic1 = {'a':1,'b':2}
    del dic1['a']
    print(dic1) #结果为:{'b': 2}
    
    申明字典
    • 最简单的方式
    dic = {'a':1,'b':2}
    
    • dict()函数
    a = dict(m=10,n="aa",h=100) #等号前不需要加引号
    print(a) #结果为:{'m': 10, 'n': 'aa', 'h': 100}
    
    • 由序列生产一个字典
    lst = [('a','f'),('b','ggg')]
    lst2 = [['a','f'],['b','ggg']]
    lst3 = (('a','f'),('b','ggg'))
    
    dict(lst) #结果为:{'a': 'f', 'b': 'ggg'}
    dict(lst2) #结果为:{'a': 'f', 'b': 'ggg'}
    dict(lst3) #结果为:{'a': 'f', 'b': 'ggg'}
    
    • 只有key的列表下,直接生产字典
    keys = ['a','b','c']
    m = dict.fromkeys(keys)
    print(m) #结果为:{'a': None, 'b': None, 'c': None}
    m['a'] = 1
    print(m) #结果为:{'a': 1, 'b': None, 'c': None}
    
    元素访问及遍历
    • 判断是否包含一个key,同list。
      key in/not in dict
    m = {'a':1,'b':2,'c':3}
    'b' in m #结果为:True
    'd' in m #结果为:False
    'd' not in m #结果为:True
    
    • 查看一个元素的value:用key做指向,核心-key必须存在。
    m = {'a':1,'b':2,'c':3}
    n = m['a']
    print(n) #结果为:1
    
    • 嵌套字典的元素value查找
    poi = {'name':'shop','city':'shanghai','information':{'address':'somewhere','num':123456}}
    print(poi['information']['address']) #结果为:somewhere
    
    • 使用get函数查找元素的value
    m = {'a':1,'b':2,'c':3}
    n = m.get('a')
    print(n) #结果为:1
    n = m.get('d','no-key')
    print(n) #结果为:no-key
    
    • 返回全部字典key。
      dict.key()type查看,输出的是视图,可以用list()得到key的列表。
    m = {'a':1,'b':2,'c':3}   
    n = m.keys()
    print(n) #结果为:dict_keys(['a', 'b', 'c'])
    type(n) #结果为:dict_keys
    k = list(m.keys())
    print(k) #结果为:['a', 'b', 'c']
    type(k) #结果为:list
    
    • 返回字典的全部元素
      dict.items()type查看,输出的是视图,可以用list()得到键值对的列表。
    m = {'a':1,'b':2,'c':3}   
    n = m.items()   
    print(n) #结果为:dict_items([('a', 1), ('b', 2), ('c', 3)])
    type(n) #结果为:dict_items
    k = list(m.items())
    print(k) #结果为:[('a', 1), ('b', 2), ('c', 3)]
    type(k) #结果为:list
    
    • 遍历所有key、value
    m = {'a':1,'b':2,'c':3}  
    for i in m.keys():
        print(i) #结果为:a\nb\nc
        
    for i in m.values():
        print(i) #结果为:1\n2\n3
    
    • 遍历所有items
    m = {'a':1,'b':2,'c':3}  
    for (k,v) in m.items():
        print("{}-{}".format(k,v)) #结果为:a-1\nb-2\nc-3
    
    字典通用操作
    • 修改一个值
      dict[key] = newvalue

    • 删除一个值
      del dict[key]

    • 更新/合并一个键值对
      dict1.update(dict2)注意,dict2字典合并到dict1中

    • 字典复制
      dict.copy()
      m = dicm和dic指向同一个字典

    • 弹出值
      dict.pop(key)
      dict.pop(key,'no-key')

    • 弹出整个键值
      dict.popitem()

    • dict和list另一个不同,value不仅仅可以包含任何数据类型,也可以包含行为:函数

    def a() :
        print("apple pie")
    
    dic = {'fun':a}
    dic['fun']() #结果为:apple pie
    
    dic = {'fun':a()} #直接出结果为:apple pie
    
    • 字典里,用方法的时候使用(),访问对象时、删除时使用[]
    练习

    随机新建一个字典结构,key包含姓名,学号,成绩,新建3个学生的字典,并组成字典列表。

    st1 = {"姓名":"小明","学号":"001","成绩":93}      
    st2 = {"姓名":"小红","学号":"002","成绩":90}       
    st3 = {"姓名":"小丽","学号":"003","成绩":69}               
    m = [st1,st2,st3]      
    print(m)       
    
    #################################
    
    name = ["小明","小红","小丽"]   
    num = ["001","002","003"] 
    score = [90,80,87]   
    
    k = {"姓名","学号","成绩"}
    st1 = dict.fromkeys(k)
    st = [st1,st1.copy(),st1.copy()]       
    
    for i in st:
        n = st.index(i)       
        i["姓名"] = name[n]
        i["学号"] = num[n]
        i["成绩"] = score[n]
    print(st)       
    

    相关文章

      网友评论

          本文标题:【Python】字典dict

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