【2017-08-31】数据结构与算法(二)

2017-08-31  本文已影响0人  小蜗牛的成长

字典

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from collections import defaultdict

default1=defaultdict(set)
print(default1)
#结果
>>defaultdict(<type 'set'>, {})

default1['a'].add(1)
default1['a'].add(1)
default1['a'].add(2)
print(default1)
#结果
>>defaultdict(<type 'set'>, {'a': set([1, 2])})

default2=defaultdict()
print(default2)
#结果
>>defaultdict(None, {})

default2['a']=1
default2['a']=2
print(default2)
#结果
>>defaultdict(None, {'a': 2})

实例一:将某些重复项按照键归档

from collections import defaultdict
pairs=[("name","ld"),("sex",1),("number","123456789"),("number","9999999")]
d=defaultdict(list)
for key,value in pairs:
       d[key].append(value)#如果自己实现,需要判断键是否存在
print(d)
#结果
>>defaultdict(<type 'list'>, {'number': ['123456789', '9999999'], 'name': ['ld'], 'sex': [1]})

实例二:统计单词出现的次数

from collections import defaultdict
strings=("hi","python","word","python","sweet","honey","hi","python")
counts=defaultdict(lambda :0)
for iterm in strings:
       counts[iterm]+=1
print(counts)
#结果
>>defaultdict(<function <lambda> at 0x01A93CF0>, {'python': 3, 'sweet': 1, 'honey': 1, 'hi': 2, 'word': 1})
from collections import OrderedDict
dicts={}
dicts["d"]=4
dicts["c"]=3
dicts["a"]=1
dicts["b"]=2
print(dicts)
#结果
>>{'a': 1, 'c': 3, 'b': 2, 'd': 4}
orderdict= OrderedDict()
orderdict["d"]=4
orderdict["c"]=3
orderdict["a"]=1
orderdict["b"]=2
print(orderdict)
#结果
>>OrderedDict([('d', 4), ('c', 3), ('a', 1), ('b', 2)])

   OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。每次当一个新的元素插入进来的时候,它会被放到链表的尾部。对于一个已经存在的键的重复赋值不会改变键的顺序。需要注意的是,一个 OrderedDict的大小是一个普通字典的两倍,因为它内部维护着另外一个链表。所以使用时需要结合内存的消耗情况权衡是否使用OrderedDict

上一篇 下一篇

猜你喜欢

热点阅读