python collections的常用工具

python collections是非常常用的一个模块,里面的一些工具可以帮助我们减少代码,并提高运行速度,如下列出:

第一个是计数用的Counter类,运行起来与collections.defaultdict(int)类似

#计数器,行为类似字典
c = collections.Counter()

for i in 'programming':
    c[i] += 1

print(c) # Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
print(c['z']) # 0

第二个是设定字典的值的默认值

#在字典中设置默认的值类型
def_dict = collections.defaultdict(list)

for i in 'abcdefg':
    def_dict[i].append(i)

print(def_dict)
# defaultdict(, {'a': ['a'], 'b': ['b'], 'c': ['c'], 'd': ['d'], 'e': ['e'], 'f': ['f'], 'g': ['g']})

def_dict= collections.defaultdict(lambda :'test')
for i in 'abcdefg':
    def_dict[i]

print(def_dict)
#defaultdict( at 0x0000017578CEF158>, {'a': 'test', 'b': 'test', 'c': 'test', 'd': 'test', 'e': 'test', 'f': 'test', 'g': 'test'})

第三个是有序的字典OrderedDict()

#有顺序的字典
ord_dict = collections.OrderedDict()

for i,j in enumerate('abcdefg'):
    ord_dict[j] = i

print(ord_dict)
# OrderedDict([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4), ('f', 5), ('g', 6)])

接下来是用于快速创建仅包含属性值的对象的namedtuple,它的用处与元组类似,都是用来存放不可变内容的

#快速建立一个简单的,仅有属性值构成的类

User = collections.namedtuple('User',['username','password','email','gender','age'])

Chrome = User('Chrome','test','[email protected]','male',27)

print(Chrome.username) # Chrome
print(Chrome.age) # 27

 

你可能感兴趣的:(Python)