美文网首页
[Python]字典(内置数据机构)

[Python]字典(内置数据机构)

作者: 易诺千金 | 来源:发表于2018-04-26 10:02 被阅读0次

    字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。

    字典的创建

    格式

    dictionary_name = {key1 : value1, key2 : value2, ...}  
    

    创建空的字典

    dictionary_name = {}  
    

    例如

    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
    print dict  
    

    输出

    {'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}
    

    注意:字典将会按照每个元素的Hashcode值进行排序,而且,字典的“键”是区分大小写的。

    字典的访问

    字典与元组或者列表不同,不是通过索引访问的,而是通过“键”值访问value值的。

    格式

    value = dictionary_name[key]  
    

    例如

    #coding:UTF-8  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
    print dict  
      
    #访问'shanghai'  
    print dict['s']  
    

    字典元素的添加和修改

    在字典中,只需一条赋值语句就实现了字典元素的添加和修改,所不同的是,若增加的元素在字典中不存在就是添加,若已经存在就是修改。

    例如

    #coding:UTF-8  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
    print dict  
      
    #添加{'c' : 'chongqing'}  
    dict['c'] = 'chongqing'  
    print dict  
      
    #修改'wuhan'为'wuchang'  
    dict['w'] = 'wuchang'  
    print dict  
    

    字典中的常用方法

    方法名 说明
    items() 返回(key,value)元组组成的列表
    iteritems() 返回指向字典的遍历器
    setdefault(k[,d]) 创建新的元素并设置默认值
    pop(k[,d]) 删除索引k对应的value值,并返回该值
    get(k[,d]) 返回索引k对应的value值
    keys() 返回字典中 key 的列表
    values() 返回字典中 value的列表
    update(E) 把字典E中的数据扩展到原字典中
    sorted() 排序
    copy() 复制一个字典中所有的数据
    • items方法主要用于实现字典的遍历操作,返回的是由若干元组组成的列表。
    #coding:UTF-8  
    #items()方法  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    print dict.items()  
    
    输出
    [('s', 'shanghai'), ('b', 'beijing'), ('g', 'guangzhou'), ('w', 'wuhan')]
    
    #coding:UTF-8  
    #使用items()方法遍历字典  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    for (k, v) in dict.items():  
        print 'dict[%s] = ' % k ,v   
    
    输出
    dict[s] =  shanghai
    dict[b] =  beijing
    dict[g] =  guangzhou
    dict[w] =  wuhan
    
    • iteritems方法主要是生成遍历器,用于实现字典的遍历,除此之外还有iterkeys()方法和itervalues()方法。
    coding:UTF-8  
    #使用iteritems()方法遍历字典  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    print dict.iteritems()#构造遍历器  
      
    for k, v in dict.iteritems():  
        print 'dict[%s] = ' % k , v  
    
    • setdefault方法用于创建新的元素并设置默认值。
    #coding:UTF-8  
    #设置默认值  
    dict = {}#空的字典  
      
    dict.setdefault('b')#{'b': None}  
    print dict  
      
    dict['b'] = 'beijing'  
    #已经设置了'b'对应的值,再设置默认将无效  
    dict.setdefault('b', 'default')  
    print dict  
    
    • pop方法用于删除指定的key处的值。
    #coding:UTF-8  
    #删除操作  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    #删除key值为's'处的值  
    dict.pop('s')  
      
    print dict  
    
    #coding:UTF-8  
    #删除操作还有使用内建的方法del()  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    #使用del方法  
    del(dict['s'])  
      
    print dict  
    
    #coding:UTF-8  
    #字典的清空使用clear()方法  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    #清空  
    dict.clear()  
      
    print dict #空的字典  
    
    • get方法用于得到key键处的值。
    #coding:UTF-8  
    #get()方法  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    print dict.get('s')#shanghai  
    
    • keys方法用于返回字典中的key的列表。
    #coding:UTF-8  
    #keys()方法  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    print dict.keys()#['s', 'b', 'g', 'w']  
    
    • values方法用于返回字典中的value的列表。
    #coding:UTF-8  
    #values()方法  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan']  
    
    • update函数主要实现的是将一个字典中的元素增加到另一个字典中。
    #coding:UTF-8  
    #update()方法  
    dict_1 = {'b' : 'beijing', 's' : 'shanghai'}  
      
    dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    dict_1.update(dict_2)  
    print dict_1  
    

    注意,若出现dict_2中有dict_1中的键,则会更新。

    • sorted排序函数。
    #coding:UTF-8  
    #sorted()方法  
    dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    #按照key排序  
    print sorted(dict.items(), key = lambda d: d[0])  
      
    #按照value排序  
    print sorted(dict.items(), key = lambda d: d[1])  
    
    • copy函数实现的是字典的浅拷贝。
    #coding:UTF-8  
    #copy()方法  
    dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
      
    dict_2 = {'c' : 'chongqing'}  
      
    dict_2 = dict_1.copy()  
    print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}  
    

    注意:清除了dict_2中原有的元素。浅拷贝是指只拷贝数据不拷贝数据之间的关系,新的数据和旧的数据使用的是同一块内存空间;对应的是深拷贝,既拷贝数据,也拷贝数据之间的关系,新的数据和旧的数据使用的是不同的内存空间。在python中可以使用copy模块来实现对象的深拷贝和浅拷贝,其中的deepcopy()用于深拷贝操作,copy()用于浅拷贝操作。

    #coding:UTF-8  
    #copy模块  
    import copy  
      
    dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}  
      
    dict_2 = copy.deepcopy(dict_1)#深拷贝  
    dict_3 = copy.copy(dict_1)#浅拷贝  
      
    dict_2['b']['s'] = 'shenyang'  
    print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}  
    dict_3['b']['s'] = 'shenyang'  
    print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}  
    

    相关文章

      网友评论

          本文标题:[Python]字典(内置数据机构)

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