跟我一起学Python数据结构之dict
2018-12-28 本文已影响0人
jerrik
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。