1:根据条件筛选数据
列表:fileter函数或列表解析
filter(lambda x:x>=0,data)
[x for x in data if x>=0]
字典:字典解析
{k:v for k,v in d.iteritems() if v>90}
集合:{x for x in s if x%3==0}
2:为元组的每个元素命名
from collections import namedtuple
namedtuple('Student',['name','age','sex','email'])
s=Student('Jim',16,'male','jim8721@gmail.com')
isinstance(s,tuple) Ture
3:如何统计出序列中元素出现频度
data=[randint(0,20) for _ in range(30)]
c=dict.fromkeys(data,0)
for x in data:
c[x]+=1
再排序。
或者
from collections import Counter
c2=Counter(data) #c2是个字典
c2.most_common(3) #出现频度最高的三个
4:如何根据字典值的大小,对字典中的项排序
sorted,如 sorted([,9,8,5,6,7])
d={x:randint(60,100) for x in 'xyz'}
sorted(d)#直接对字典进行排序是按键进行排序的,而不是按值
方法1:
zip(d.values(),d.keys()) #值放前面的元组列表
zip(d.itervalues(),d.iterkeys()) #值放前面的元组列表
sorted(zip(d.itervalues(),d.iterkeys())) #成功按成绩排名
方法2:sorted的key
sorted(d.items(),key=lamda x:x[1])
5: 如何快速找到多个字典中的公告键
from random import randint,sample
sample('abcdefg',3)
sample('abcdefg',randint(3,6))
s1={x: randint(1,4) for x in sample('abcdefg',randint(3,6))}
s2={x: randint(1,4) for x in sample('abcdefg',randint(3,6))}
s3={x: randint(1,4) for x in sample('abcdefg',randint(3,6))}
使用集合(set)的交集操作
方法一
s1.viewkeys()&s2.viewkeys()$s3.viewkeys()
方法二
map(dict.viewkeys,[s1,s2,s3])
reduce(lambda a,b: a^b,map(dict.viewkeys,[s1,s2,s3]))