美文网首页
跟我一起学Python数据结构之dict

跟我一起学Python数据结构之dict

作者: jerrik | 来源:发表于2018-12-28 20:11 被阅读0次

    python中的dict称之为字典,在java里对应的是HashMap。

    一、创建字典
    map = {}
    或
    map = dict()
    
    二、初始化字典
    map = {'name:'jerrik'}
    或
    map = dict(name='jerrik') //这里是传入的key=value的形式,因为dict参数中定义的是**kwargs
    
    三、常用方法
    #定义一个dict
    map = {}
    map['name'] = 'jerrik'
    
    #查看类型
    print "type(map): %s" % type(map)
    
    #判断它是否为dict的实例
    print "isinstance dict: %s: " % isinstance(map,dict)
    
    #列出所有key
    print "map.keys: %s" % map.keys()
    
    #列出所有value
    print "map.values: %s" % map.values()
    
    #判断dict中是否有对应key
    print "map.has_key('name'): %s" % map.has_key('name')
    
    #设置一个key
    map.setdefault('age',12)
    print "after set default('age'), map.keys: %s" % map.keys()
    
    print "map: %s" % map
    
    #根据key获取对应的value
    print "map.get('age'): %s" % map.get('age')
    
    #移除对应的键值对
    map.pop('name')
    print "after pop('name'): %s" % map
    
    #重新复制一个map
    print "map.copy(): %s, is equal: %s" % (map.copy(),map.copy() == map)
    
    #枚举出所有的key-value(得到一个tuple)
    print "map.items(): %s" % map.items()
    print "map.items()[0][1]: %s" % map.items()[0][1]
    
    print "map.viewkeys: %s" % map.viewkeys()
    print "map.viewitems: %s" % map.viewitems()
    print "map.viewvalues: %s" % map.viewvalues()
    
    #根据传入的list,组装成一个dict,vaule默认为None
    map2 = dict.fromkeys([20,30,40])
    print "dict.fromkeys([20,30,40]): %s" %map2
    
    #根据传入的list,组装成一个dict,value为指定的'jerrik'
    map2 = dict.fromkeys([20,30,40],'jerrik')
    print "dict.fromkeys([20,30,40],'jerrik'): %s" %map2
    
    #如果list有重复key,则自动去重
    map2 = dict.fromkeys([20,20,30],'jerrik')
    print "dict.fromkeys([20,20,30],'jerrik'): %s" %map2
    
    #清除dict
    map.clear()
    print "after map.clear(): %s" % map
    

    查看结果:

    type(map): <type 'dict'>
    isinstance dict: True: 
    map.keys: ['name']
    map.values: ['jerrik']
    map.has_key('name'): True
    after set default('age'), map.keys: ['age', 'name']
    map: {'age': 12, 'name': 'jerrik'}
    map.get('age'): 12
    after pop('name'): {'age': 12}
    map.copy(): {'age': 12}, is equal: True
    map.items(): [('age', 12)]
    map.items()[0][1]: 12
    map.viewkeys: dict_keys(['age'])
    map.viewitems: dict_items([('age', 12)])
    map.viewvalues: dict_values([12])
    dict.fromkeys([20,30,40]): {40: None, 20: None, 30: None}
    dict.fromkeys([20,30,40],'jerrik'): {40: 'jerrik', 20: 'jerrik', 30: 'jerrik'}
    dict.fromkeys([20,20,30],'jerrik'): {20: 'jerrik', 30: 'jerrik'}
    after map.clear(): {}
    
    四、迭代dict

    dict提供了很多种迭代方式,我们一起来看下:

    map = dict(name='jerrik',age=27,sex='男')
    
    print "-----1-----"
    
    #第一种
    for key in map:
        print key,map.get(key)
    
    print "-----2-----"
    
    #第二种
    for key in map.keys():
        print key,map[key]
    
    print "------3----"
    
    #第三种
    for _tuple in map.items():
        print _tuple[0],_tuple[1]
    
    print "-----4-----"
    
    # 第四种
    for key in map.iterkeys():
        print key,map[key]
    
    print "-----5-----"
    
    # 第五种
    for _tuple in map.iteritems():
        print _tuple[0],_tuple[1]
    
    print "-----6-----"
    
    # 第六种
    for key in map.viewkeys():
        print key,map[key]
    
    
    print "-----7-----"
    
    # 第七种
    for _tuple in map.viewitems():
        print _tuple[0],_tuple[1]
    
    

    查看结果:

    -----1-----
    age 27
    name jerrik
    sex 男
    -----2-----
    age 27
    name jerrik
    sex 男
    ------3----
    age 27
    name jerrik
    sex 男
    -----4-----
    age 27
    name jerrik
    sex 男
    -----5-----
    age 27
    name jerrik
    sex 男
    -----6-----
    age 27
    name jerrik
    sex 男
    -----7-----
    age 27
    name jerrik
    sex 男
    

    其中带items()的迭代方法可以用元组()来接收,例如:

       for (key,value) in map.items():
        print key,value
    

    五、最后
    dict是python内置的无序map,如果要使用有序的map,则可以这样写:

    from collections import OrderedDict
    orderDic = OrderedDict()
    

    要引入collections包中的OrderedDict。

    相关文章

      网友评论

          本文标题:跟我一起学Python数据结构之dict

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