组合数据笔记
- 集合
- 序列类型
- 元组
- 列表
- 字典
- 词频统计(应用)
学习
慕课:python学习的笔记
集合
要创建一个空集合,只能用se()方法。集合运算
重点应用:数据去重
序列类型
序号的索引:正反两种。
ls[::-1]
表示对序列取反操作。
元组
- 元组是一种序列类型,一旦创建就不能被修改
- 使用()和
tuple()
创建,元素间使用,逗号分割 - 可以使用,或者不使用小括号
其中creature[::-1]
不改变原有元组的值,是生成了一个新的和原始元组反序的元组。
列表
- 列表是一种序列类型,创建后可以随意被修改
- 使用[]和
list()
创建,元素间使用,逗号分割 - 列表中各元素的类型可以不同,无长度限制
注意:ls.append(x)
是增加一个元素x
关于del ls[::3]
说明,是从索引0开始删除,以3为步长,进行删除。
ls =['w','t','y','q','o','d','b']
del ls[::3]
print(ls)
>>['t', 'y', 'o', 'd']
应用场景:数据遍历、数据保护
for item in ls:
for item in tp:
数据保护:元组是不能被修改的,则有的时候,若不想数据被修改,就转换成元组的形式tp=tuple(ls)
。
字典
字典类型是“映射”的体现:
- 键值对:键是数据索引的扩展
- 字典是键值对的集合,键值对之间无序
- 采用{}或
dict()
创建,键值对用:冒号表示
集合也是{}表示,但是在集合部分说道,要生成空集合,只能用set()
方法,是因为{}方法生成的是字典。
其中d.items()
方法,返回dict_items()括起来的数据。
dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}
print "字典值 : %s" % dict.items()
# 遍历字典列表
for key,values in dict.items():
print key,values
>>字典值 :dict_items( [('Google', 'www.google.com'), ('taobao', 'www.taobao.com'), ('Runoob', 'www.runoob.com')])
Google www.google.com
taobao www.taobao.com
Runoob www.runoob.com
其中d.keys() d.values()
并不返回列表类型,它是返回keys或values类型,所以只能做遍历操作,不能当做列表处理。
词频统计(应用)
#Calhamlet 词频统计
def getText():
txt = open("hamlet.txt","r").read()
txt = txt.lower()
for ch in '!"#$%&*()+,-.;<>=?@[\\]_{|}^~‘’·':
txt = txt.replace(ch," ")
return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:
counts[word] = counts.get(word,0)+1
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count =items[i]
print("{0:<10}{1:>5}".format(word,count))
- 要对原文本特殊字符进行处理,用空格替换
-其中list(counts.items())
的理解,print(counts.items())
与list(counts.items())
结果表达形式是不一样的,以便于操作进行转换成列表处理。。
>>dict_items([('Google', '3'), ('Runoob', '5'), ('taobao', '1')])
>>[('Google', '3'), ('Runoob', '5'), ('taobao', '1')]
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
key=lambda x:x[1]
为对前面的对象中的第二维数据(即字典value)的值进行排序。key=lambda 变量:变量[维数]
。
reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认) print("{0:<10}{1:>5}".format(word,count))
其中{0:<10}{1:>5}
中,冒号是引导符,后面跟的是格式控制方法。<表示左对齐,>表示右对齐,数字表示宽度。同理,题中<10表示左对齐,并占10个位置,>5表示右对齐,占5个位置。
输出结果: