1,字典get用法

如果key没有值,返回一个None

>>> dic = {'k1':'v1','k2':'v2','k3':'v3'}
>>> dic.get('k4')
>>> p = dic.get('k4')
>>> print p
None

  get(‘k4’,'k4')如果k4 没有值可以指定返回值,如果有值,则返回原有值

>>> dic.get('k4','v4')
'v4'
>>> dic.get('k3','v4')
'v3'
>>> dic.get('k2','v4')
'v2'
>>> dic.get('k1','v4')
'v1'

2,字典的取值:

>>> dic.keys()
['k3', 'k2', 'k1']
>>> dic.values()
['v3', 'v2', 'v1']
>>> for k,v in dic.items():
... print k,v
...
k3 v3
k2 v2
k1 v1
>>> for k,v in dic.items():
... print k,v,
...
k3 v3 k2 v2 k1 v1
>>>

3,set

去除重复的元素。

t = set(['a','b','c'])

s = set(['a','b','c','d'])
集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:

a = t | s # t 和 s的并集

>>> a = t | s
>>> a
set(['a', 'c', 'b', 'd'])

b = t & s # t 和 s的交集

>>> b = t & s
>>> b
set(['a', 'c', 'b'])

c = t – s # 求差集(项在t中,但不在s中)

>>> c = t - s
>>> c
set([])

d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)

基本操作:

t.add('x') # 添加一项

s.update([10,37,42]) # 在s中添加多项

4, input 输入的字符串可以使用json转成字典 使用json.loads(),例如:

>>> import json
>>> s = raw_input()
{"k1":"v1","k2":"v2"} #一点要是双引号
>>> type(s)
<type 'str'>
>>> dic = json.loads(s)
>>> type(s)
<type 'str'>
>>> type(dic)
<type 'dict'>
>>>

5, OrderedDict,

使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

如果要保持Key的顺序,可以用OrderedDict

注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:

>>> from collections import OrderedDict
>>> t = dict([('a',1),('b',2),('c',3)])
>>> t
{'a': 1, 'c': 3, 'b': 2}
>>> s = OrderedDict([('a',1),('b',2),('c',3)])
>>> s
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>>

6,Counter

这是一个计数器,统计字符出现的次数。

>>> from collections import Counter
>>> c = Counter()
>>> a = 'asdfdscdcdfasad'
>>> c = Counter(c)
>>> c = Counter(a)
>>> c
Counter({'d': 5, 'a': 3, 's': 3, 'c': 2, 'f': 2})
>>>

7,默认字典:使用default为字典设置默认值

>>> from collections import defaultdict
>>> l = defaultdict(list)
>>> print l
defaultdict(<type 'list'>, {})
>>> l['k1'].append('v1')
>>> print l
defaultdict(<type 'list'>, {'k1': ['v1']})
>>> l['k1'].append('v1.1')
>>> print l
defaultdict(<type 'list'>, {'k1': ['v1', 'v1.1']})
>>>

 8.动态参数(函数)

>>> def show(*arg):
... print arg,type(arg)
...
>>> show(123,123)
(123, 123) <type 'tuple'>
>>> >>> def show(**arg):
... print arg,type(arg)
...
>>> show(n1=12,n2=123,n3=234)
{'n1': 12, 'n2': 123, 'n3': 234} <type 'dict'>
>>>

内置函数map,fillter

>>> l = [11,22,33,44]
>>> newl = map(lambda x:x+100,l)# 也可以加函数map(函数名,l)
>>> newl
[111, 122, 133, 144]

>>> newl = map(lambda x:x+100,l)
>>> newl
[111, 122, 133, 144]
>>> def func(s):
... if s >133:
... return True
... else:
... return False
...
>>> n = filter(func,newl)
>>> n
[144]

zip的方法:

>>> l = [1,3,5,7]
>>> s = [2,4,6,8]
>>> k = zip(l ,s)
>>> k
[(1, 2), (3, 4), (5, 6), (7, 8)]
>>>

9,迭代器和生成器

定义:一个函数调用时返回一个迭代器,那这个函数就叫生成器(generater),如果函数中包含yield语法,那这个函数就变成生成器

def cash_cut(amount):
while amount >0:
amount -= 100
yield 100
print("擦,有来取钱了。。。败家子")
ATM = cash_cut(500)
print(type(ATM))
print(ATM.__next__())
print(ATM.__next__())
print(ATM.__next__()) 输出:
<class 'generator'>
100
擦,有来取钱了。。。败家子
100
擦,有来取钱了。。。败家子
100

 yield单线程异步实例:

import time
def customer(name):
print('%s准备吃包子了'% name)
while True:
baozi = yield
print('包子[%s]来了,被%s给吃了'%(baozi,name)) def product():
c1 = customer('W')
c2 = customer('B')
c1.__next__()
c2.__next__()
print('我要开始做包子了,你们先等会!')
for i in range(10):
time.sleep(1)
print('我做了两个包子!')
c1.send(i)
c2.send(i)
product()

10.装饰器例子

def login(func):
def inner(arg):
print('please user verify....')
func(arg)
return inner @login
def tv(name):
print('welcome [%s] look at tv' %name) tv('www')

 

最新文章

  1. [转载]TFS源代码管理8大注意事项
  2. MySQL数据库my.cnf性能参数如何调优
  3. Hadoop学习1--解决启动过程中的问题
  4. javascript 四舍五入
  5. HTML标准事件(包含HTML5)
  6. jquery $.post
  7. c# 通过配置自动附加数据库
  8. java输出日期时间
  9. CodeForces 242E二维线段树
  10. php SESSION入库的实现
  11. linux之systemd---学习
  12. jQuery 学习笔记(3)(内容选择器、attr方法、prop方法,类的操作)
  13. Java中 == 和 equals 的问题
  14. WebService学习概念总结
  15. 替换元素(replace,replace_if,replace_copy,replace_copy_if)
  16. powerdesigner中实现PDM到MYSQl数据库的转换
  17. Test传送门(更新中)
  18. 网站PV、UV以及查看方法
  19. mongodb MongoDB 聚合 group(转)
  20. Linux+Redis实战教程_day01_Linux系统上安装tomcat

热门文章

  1. 关于centerOS下修改网络连接
  2. 源码编译、安装net-snmp的方法和遇到的问题
  3. Runtime 解读
  4. TensorFlow模型加载与保存
  5. 安装grid时找不到ASM共享磁盘
  6. Java double 加、减、乘、除
  7. shell数组的使用
  8. leetcode279
  9. React将某段文字插入到某个元素里
  10. PHP json_encode 文本形式数字下标数组导致下标丢失