python基本功

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 )

猜你喜欢

转载自blog.csdn.net/aoxue018/article/details/82256078