天天看點

複合資料類型,英文詞頻統計

作業要求來自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696

1.清單,元組,字典,集合的增删改查及周遊

清單

操作 方法 示例
增加

list.append(obj)

增加元素到末尾

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
list.append('張四')
print(list)      
append
複合資料類型,英文詞頻統計

list.insert(index, obj)

增加元素到指定位置

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
list.insert(1,'Jack')
print(list)      
insert
複合資料類型,英文詞頻統計

list.extend(list2)

将list2清單中的元素增加到list中

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
list2=['張四','Jack']
list.extend(list2)
print(list)      
entend
複合資料類型,英文詞頻統計
删除

list.pop(index)

删除指定位置的元素

list.pop()

删除最後一個元素

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
list2=['張四','Jack']
list.pop(1)
list2.pop()
print(list,list2)      
pop
複合資料類型,英文詞頻統計
修改

list[index]=obj

修改指定位置的元素

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
list[2]='張四'
print(list)      
list[]=obj
複合資料類型,英文詞頻統計
查詢

list[index]

通過下标索引,從0開始

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
print(list[2])      
list[]
複合資料類型,英文詞頻統計

list[a:b]

切片,從哪裡到哪裡

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
print(list[1:4])      
複合資料類型,英文詞頻統計
周遊 for x in list
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
for x in list:
    print(x, end=",")      
複合資料類型,英文詞頻統計
for i in range(len(list))
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
for i in range(len(list)):
    print("序号:", i, "  值:", list[i])      
複合資料類型,英文詞頻統計
for i,val in enumerate(list)
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
for i, val in enumerate(list):
    print("序号:", i, "  值:", val)      
for i, val in enumerate(list)
複合資料類型,英文詞頻統計
for i in list
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
for i in list:
    idx = list.index(i) # 索引
    if (idx < len(list) - 1):
        print(i, '---------', list[idx + 1])      
複合資料類型,英文詞頻統計

元組

tup=tup1+tup2

元組不支援修改,但可以通過連接配接組合的方式進行增加

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
tup1=('Michael','Bob','Tracy','李三','Tracy','Sarah')
tup2=('張四','Jack')
tup=tup1+tup2
print(tup)      
tup1+tup2
複合資料類型,英文詞頻統計

del tup

元組不支援單個元素删除,但可以删除整個元組

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
print(tup)
del tup
print(tup)      
複合資料類型,英文詞頻統計

tup[index]=obj

元組和清單轉換

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
tup=list(tup)
tup[0]='張四'
tup[1]='Jacky'
tup=tuple(tup)
print(tup)      
複合資料類型,英文詞頻統計
tup[index]
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
print(tup[2])      
複合資料類型,英文詞頻統計

tup[a:b]

切片,顧頭不顧尾

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
print(tup[2:5])      
複合資料類型,英文詞頻統計
for x in (tup)
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
for x in (tup):
    print(x)      
複合資料類型,英文詞頻統計

字典

dict[key]=value

通過指派的方法增加元素

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
dict['張四']=8
print(dict)      
dict[key]
複合資料類型,英文詞頻統計

del dict[key]

删除單一進制素,通過key來指定删除

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
del dict['Bob']
print(dict)      
del dict[]
複合資料類型,英文詞頻統計
dict.pop(key)
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
dict.pop('Tracy')
print(dict)      
dict.pop()
複合資料類型,英文詞頻統計
通過對已有的key重新指派的方法修改
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
dict['Bob']=8
print(dict)      
複合資料類型,英文詞頻統計
通過key通路value值
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
print(dict['李三'])      
複合資料類型,英文詞頻統計

dict.items()

以清單傳回可周遊的(鍵, 值) 元組數組

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
print(dict.items())      
複合資料類型,英文詞頻統計

dict.keys()

以清單傳回一個字典所有鍵值

dict.values()

以清單傳回一個字典所有值

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
print(dict.keys(),dict.values())      
dict.keys(),dict.values()
複合資料類型,英文詞頻統計

dict.get(key)

傳回指定key的對應字典值,沒有傳回none

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
print(dict.get('Michael'))      
dict.get()
複合資料類型,英文詞頻統計
for key in dict.keys()
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
for key in dict.keys():
    print(key)      
複合資料類型,英文詞頻統計
for val in dict.values()
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
for val in dict.values():
    print(val)      
複合資料類型,英文詞頻統計
for key,val in dict.items()
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
for key, val in dict.items():
    print(key, " : ", val)      
for key, val in dict.items()
複合資料類型,英文詞頻統計

集合

s.add(obj)

在集合s中添加對象obj

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
s.add('張四')
print(s)      
s.add()
複合資料類型,英文詞頻統計

s.remove(obj)

從集合s中删除對象obj

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
s.remove('Bob')
print(s)      
s.remove()
複合資料類型,英文詞頻統計

s[index]=obj

集合和清單轉換

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
s=list(s)
s[2]='張四'
s=set(s)
print(s)      
複合資料類型,英文詞頻統計
for x in s
複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
for x in s:
    print(x)      
複合資料類型,英文詞頻統計

2.總結清單,元組,字典,集合的聯系與差別

(1)清單

  • 清單list,用中括号“[ ]”表示
  • 清單是一組任意類型的值,按照一定順序組合而成的 
  • 可以随時添加删除修改其中的元素
  • 元素可重複
  • 存儲時每一個元素被辨別一個索引,每當引用時,會将這個引用指向一個對象,是以程式隻需處理對象的操作

(2)元組

  • 元組tuple,用小括号“( )”表示
  • 與清單相同,有序
  • 一旦初始化就不能修改
  • 與清單相似,元組是對象引用的數組

(3)字典

  • 字典dict,用大括号“{key,value}”表示
  • 字典中的項沒有特定順序,以“鍵”為象征 
  • 因為是無序,故不能進行序列操作,但可以在遠處修改,通過鍵映射到值
  • key不能重複
  • 字典存儲的是對象引用,不是拷貝,和清單一樣

(4)集合

  • 集合set,用小括号“( )”表示
  • 無序
  • 可變,可以添加和删除元素
  • 無重複
  • 與清單相似

3.詞頻統計

複合資料類型,英文詞頻統計
複合資料類型,英文詞頻統計
# import nltk
# nltk.download("stopwords")
from nltk.corpus import stopwords
stops=set(stopwords.words('english'))
#通過檔案讀取字元串 str,對文本進行預處理
def gettxt():
    sep=".,:;?!-_'"
    txt=open('Crimes and Punishments.txt','r', encoding='UTF-8').read().lower()
    for ch in sep:
        txt=txt.replace(ch,' ')
    return txt
#分解提取單詞 list
txtList=gettxt().split()
print(txtList)
print('crimes:',txtList.count('crimes'))
txtSet=set(txtList)
#排除文法型詞彙,單詞計數字典 set , dict
txtSet=txtSet-stops
print(txtSet)
txtDict={}
for word in txtSet:
    txtDict[word]=txtList.count(word)
print(txtDict)

print(txtDict.items())
word=list(txtDict.items())
#按詞頻排序 list.sort(key=lambda),turple
word.sort(key=lambda x:x[1],reverse=True)
print(word)
#輸出頻率較高的詞語top20#
for i in range(20):
    print(word[i])
#排序好的單詞清單word儲存成csv檔案
import pandas as pd
pd.DataFrame(data=word).to_csv('Crimes and Punishments.csv',encoding='utf-8')      

詞頻統計具體代碼

結果如下圖:

複合資料類型,英文詞頻統計

詞雲如下圖:

複合資料類型,英文詞頻統計