输出结果是:
1 Counter({ ' s ': 4, ' a ': 2, ' d ': 2})如果说提取里面的值就需要用到
1 b = collections.Counter( ' aswedswedswedswed ') 2 print b 3 b.update(c) # 把c添加到b里面 4 print b输出结果是:
1 Counter({ ' s ': 4, ' a ': 2, ' d ': 2}) 2 Counter({ ' s ': 4, ' e ': 4, ' d ': 4, ' w ': 4, ' a ': 1}) 3 Counter({ ' s ': 8, ' d ': 6, ' e ': 4, ' w ': 4, ' a ': 3}) 1 import collections 2 c = collections.Counter( " sdsasdsa ") # 打印出后面重复的字符串 3 print c 4 print c.most_common(3) # 显示前几个输出结果是:
1 Counter({ ' s ': 4, ' a ': 2, ' d ': 2}) 2 [( ' s ', 4), ( ' a ', 2), ( ' d ', 2)] 1 print sorted(b) # 按顺序打印元素 2 print b输出结果是:
1 Counter({ ' s ': 4, ' e ': 4, ' d ': 4, ' w ': 4, ' a ': 1}) 2 [ ' a ', ' d ', ' e ', ' s ', ' w '] 2、默认字典(defaultdict) 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 即: {'k1': 大于66 , 'k2': 小于66} 1 from collections import defaultdict 2 values = [11, 22, 33,44,55,66,77,88,99,90] 3 my_dict = defaultdict(list) 4 for value in values: 5 if value>66: 6 my_dict[ ' k1 '].append(value) 7 else: 8 my_dict[ ' k2 '].append(value) 9 print my_dict输出结果是:
defaultdict(<type ' list '>, { ' k2 ': [11, 22, 33, 44, 55, 66], ' k1 ': [77, 88, 99, 90]})3、有序字典(orderedDict )
记住了字典元素的添加顺序,进行排序 1 from collections import OrderedDict 2 a = { ' a ':1 , ' b ':2 , ' c ': 3} 3 print OrderedDict(sorted(a.items(), key= lambda t: t[1])) 4 print OrderedDict(sorted(a.items(), key= lambda t: len(t[0]))) 5 print OrderedDict(sorted(a.items(), key= lambda t: t[1]))输出结果是:
1 OrderedDict([( ' a ', 1), ( ' b ', 2), ( ' c ', 3)]) 2 OrderedDict([( ' a ', 1), ( ' c ', 3), ( ' b ', 2)]) 3 OrderedDict([( ' a ', 1), ( ' b ', 2), ( ' c ', 3)])4、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型,可命名元组 1 Mytuple = collections.namedtuple( ' Mytuple ',[ ' x ', ' y ']) # 新建元组 2 old = Mytuple(1, 2) 3 print old 4 new = Mytuple(1,2) 5 print new输出结果是:
1 Mytuple(x=1, y=2) 2 Mytuple(x=1, y=2)5、双向队列(deque)
#线程安全的双向队列 1 q = collections.deque() # 加双向队列 2 q.append(11) # 添加队列 3 q.append(12) 4 q.append(13) 5 print q 6 print q.popleft() # 左边取值 7 print q.pop() # 右边取值 #单向队列,队列FIFO ,栈,弹夹 1 import Queue # 模块 2 q = Queue.Queue() 3 q.put(1) # 价值 4 q.put(2) 5 q.put(3) 6 print q.get(1) # 取值#vars() = 当前模块的所有变量
1 # print vars() 2 # {'__builtins__': <module '__builtin__' (built-in)>, '__file__': 'D:/s11day2/s11day2/coll.py', '__package__': None, 'collections': <module 'collections' from 'D:\Python27\Lib\collections.pyc'>, '__name__': '__main__', '__doc__': None} 二、内置函数内置函数就是,python内部已经定义好的函数
all(值) #当值都是真的时候,返回真,否则返回假 any() #只要有一个真,全为真,否则为假 1 >>> li = [ ' as ', ' aa ', ''] 2 >>> any(li) 3 True 4 >>> all(li) 5 False 6 >>> li = [ ' as ', ' aa ', ' as '] 7 >>> all(li) 8 True 9 >>> any(li) 10 True 11 >>> li = [ '', '', ''] 12 >>> any(li) 13 False 14 for k,v in enumerate(li, 起始值) 15 print k,v 三、自定义函数自己写好的函数,在用的时候调用,不用的时候不执行
#邮件报警 1 import smtplib 2 from email.mime.text import MIMEText 3 from email.utils import formataddr 4 def email(message): # 收件人可以是一个列表多个参数receiver 5 msg = MIMEText(message, ' plain ', ' utf-8 ') 6 msg[ ' From '] = formataddr([ " 发件者姓名 ", ' 发件邮箱 ']) 7 msg[ ' To '] = formataddr([ " 收件者姓名 ", ' 收件箱 ']) 8 msg[ ' Subject '] = " 主题 " 9 server = smtplib.SMTP( " smtp.qq.com ", 25) 10 server.login( " 发件邮箱 ", " 密码 ") 11 server.sendmail( ' 发件邮箱 ', [ ' 收件箱 ',], msg.as_string()) 12 server.quit() #收件人可以是一个列表多个参数receiver#在加一个for循环
1 if __name__ == ' __main__ ': 2 cpu = 90 3 disk = 100 4 ram = 50 5 for i in range(1): 6 if cpu > 80: 7 alert = u " CPU报警 " 8 email(alert) 9 if disk > 120: 10 alert = u " disk报警 " 11 emial(alert) 12 if ram > 20: 13 alert = u " 内存报警 " 14 email(alert) 四、动态参数图解:
1 >>> def func(*arg): 2 ... print arg 3 ... 4 >>> func() 5 () 6 >>> func(1) 7 (1,) 8 >>> func(1,2) 9 (1, 2) 10 >>> func(1,2,3) 11 (1, 2, 3) 12 >>> li = (11,22,33,44,55,66) 13 >>> func(li) 14 ((11, 22, 33, 44, 55, 66),) 15 >>> func(*li) 16 (11, 22, 33, 44, 55, 66)
1、接受多个参数
2、内部自动构造元组 3、序列,*,避免内部构造元组 加一个*内部构造是元组,两个**kwargs是构造字典,传入的时候要func(k1=123,k2=124),传入字典 1 func(**dic) 2 >>> def func(**kwargs): 3 ... print kwargs 4 ... 5 >>> func() 6 {} 7 >>> func(123) 8 Traceback (most recent call last): 9 File " <stdin> ", line 1, in <module> 10 TypeError: func() takes exactly 0 arguments (1 given) 11 >>> func(k1=123,k2=234) 12 { ' k2 ': 234, ' k1 ': 123} 13 >>> ls = { ' k1 ':233, ' k2 ':345} 14 >>> func(**ls) 15 { ' k2 ': 345, ' k1 ': 233}两个动态函数结合
转载于:https://www.cnblogs.com/wulaoer/p/5032180.html
相关资源:杜斯坦先生33-源码