欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python collections的常用工具

程序员文章站 2022-06-19 11:58:39
...

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(<class 'list'>, {'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(<function <lambda> 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