首页 > 代码库 > collections之有序字典和默认字典

collections之有序字典和默认字典

#defaultdict的意思是定义一个dict,然后定义这个字典的value默认是一个什么类型

#如下,定义一个字典,该字典的value的值默认是list
import collections
def_dict = collections.defaultdict(list)

def_dict[‘k1‘].append(‘v1‘)
print(def_dict[‘k1‘])
# [‘v1‘]
print(def_dict)
# defaultdict(<class ‘list‘>, {‘k1‘: [‘v1‘]})


#有序字典,用OrderedDict来创建一个有序的字典

import collections
order_dict = collections.OrderedDict()
order_dict[‘k1‘] = ‘v1‘
order_dict[‘k2‘] = ‘v2‘
order_dict[‘k3‘] = ‘v3‘
order_dict[‘k4‘] = ‘v4‘
print(order_dict)

# OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘)])

#有序字典中还有一些方法,这个和字典中的方法是一致的


#move_to_end,把某个key的值放在最后
order_dict.move_to_end(‘k2‘)
print(order_dict)

# OrderedDict([(‘k1‘, ‘v1‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k2‘, ‘v2‘)])


#popitem,删除ordereddict的最后一个key的值

order_dict.popitem()
print(order_dict)

# OrderedDict([(‘k1‘, ‘v1‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘)])


#pop,从ordereddict中拿走指定key的值,同样,pop也可以拿到删除的key对应的value的值
ret = order_dict.pop(‘k3‘)
print(order_dict)
# OrderedDict([(‘k1‘, ‘v1‘), (‘k4‘, ‘v4‘)])
print(ret)
# v3


#setdefault,给字典设置默认的value的值,下面这两种设置默认value的值的方法是等同的
order_dict[‘k2‘] = None
order_dict.setdefault(‘k3‘)
print(order_dict)

# OrderedDict([(‘k1‘, ‘v1‘), (‘k4‘, ‘v4‘), (‘k2‘, None), (‘k3‘, None)])
#setdefault也可以对添加的key设置指定的value的值
order_dict.setdefault(‘k5‘,‘v5‘)
print(order_dict)

#OrderedDict([(‘k1‘, ‘v1‘), (‘k4‘, ‘v4‘), (‘k2‘, None), (‘k3‘, None), (‘k5‘, ‘v5‘)])

#update,更新字典,如果有对应的key,则更新key的值,如果没有则添加新key到字典中
order_dict.update({‘k6‘:‘v6‘,‘k7‘:‘v7‘})
print(order_dict)

# OrderedDict([(‘k1‘, ‘v1‘), (‘k4‘, ‘v4‘), (‘k2‘, None), (‘k3‘, None), (‘k5‘, ‘v5‘), (‘k6‘, ‘v6‘), (‘k7‘, ‘v7‘)])

collections之有序字典和默认字典