2.基本元组的缺点
student = ('yan',26,'male','[email protected]')
student[0] #获取值要通过索引,对于程序的维护是不利的
是基本元素的一个子类
from collections import namedtuple
Student = namedtuple('Student',['name','age','sex','email'])
s = Student('yan',16,'male','[email protected]')
s2 = Student(name='ning',age=20,sex='male',email='[email protected]')
s.name
s2.name
isinstance(s,tuple) # true 查看是否是元组
3.统计序列中元素出现的频度
list = [1, 2, 9, 9, 2, 9, 4, 6, 4, 9, 9, 7, 8, 7, 9, 5, 2, 1, 4, 7]
from random import randint
list = [randint(1,10) for _ in range(20)]
list
初始化字典为0
c = dict.fromkeys(list,0)
#{1: 0, 2: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}
方法一
for _ in list:
c[_] += 1
#再想找频度最高的3个词,就排序
obj = fromkeys(list,0) for _ in obj:
obj[_] = list.count(_)
方法二
In [32]: from collections import Counter
In [33]: c2 = Counter(list)
In [34]: c2
Out[34]: Counter({9: 6, 2: 3, 4: 3, 7: 3, 1: 2, 5: 1, 6: 1, 8: 1})
4.根据字典中值的大小,对字典进行排序
使用函数 sorted()
In [39]: list = sorted([4,5,6,7,8,2])
In [40]: list
Out[40]: [2, 4, 5, 6, 7, 8]
初始化数据
In [46]: obj = {k:randint(1,30) for k in 'abcdefg'}
In [47]: obj
Out[47]: {'e': 8, 'd': 16, 'f': 28, 'a': 25, 'g': 8, 'c': 2, 'b': 19}
解释:不能直接把字典放入 sorted内置函数中,这样的话会变成一个列表,排的是键,值会消失
扩充:元组比较大小的特点,先比较第一个,第一个相等再比较第二个
In [48]: (97,'a')>(69,'b')
Out[48]: True
In [49]: (97,'a')>(97,'b')
Out[49]: False
获取字典的所有的键 或 所有的值
In [52]: keys = obj.keys()
In [53]: keys
Out[53]: dict_keys(['e', 'd', 'f', 'a', 'g', 'c', 'b'])
In [54]: values = obj.values()
In [55]: values
Out[55]: dict_values([8, 16, 28, 25, 8, 2, 19])
In [56]: yuanzu = zip(obj.values(),obj.keys())
....:
(8, 'e')
(16, 'd')
(28, 'f')
(25, 'a')
(8, 'g')
(2, 'c')
(19, 'b')
排序 1
In [71]: list2 = sorted(zip(values,keys))
In [72]: list2
Out[72]: [(2, 'c'), (8, 'e'), (8, 'g'), (16, 'd'), (19, 'b'), (25, 'a'), (28, 'f')]
排序 2
只有字典有 obj.items()
In [87]: list3 = sorted(obj.items(),key = lambda x:x[1])
In [88]: list3
Out[88]: [('c', 2), ('e', 8), ('g', 8), ('d', 16), ('b', 19), ('a', 25), ('f', 28)]
sorted(dic.iteritems(), key=lambda d:d[1], reverse = False )