跟我一起学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。

上一篇下一篇

猜你喜欢

热点阅读