python dict 底层数据结构_跟我一起学Python数据结构之dict

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):

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值