python練習題 字典和集合

2021-06-28 10:05:03 字數 1545 閱讀 3230

題目內容:

實現逆向最大匹配分詞演算法,即從右向左掃瞄,找到最長的詞並切分。如句子「研究生命的起源」,逆向最大匹配分詞演算法的輸出結果為「研究 生命 的 起源」。

輸入格式:

第一行是以utf-8格式輸入的詞表,每個詞之間以空格分隔。

接下來是若干行以utf-8格式輸入的中文句子。

輸出格式:

以utf-8格式輸出的逆向最大匹配的分詞結果,每個詞之間使用空格分隔。每個輸入對應一行輸出。

輸入樣例:

你 我 他 愛 北京 天安門 研究 研究生 命 生命 的 起源

研究生命的起源

我愛北京天安門

輸出樣例:

研究 生命 的 起源

我 愛 北京 天安門

我的無法通過的錯誤的解答:

#coding=utf-8

def word_seg(sentence,word_dic,max_length):

begin=0

words=

sent = unicode(sentence,'utf-8' );

end=len(sent);

while end>0:

for begin in range( max(end-max_length,0) ,end ,1 ):

word =sent[begin:end]

if word in word_dic or end==begin+1:

break

end=begin

return words

def load_dic_text(text):

lst=;

lst=text.split(' ')

word_dic=set()

max_length=1

for one_word in lst:

word=unicode(one_word.strip(),'utf-8')

word_dic.add(word)

if len(word)>max_length:

max_length=len(word)

return max_length,word_dic

# print load_dic('lexicon.dic')

s=raw_input()

max_len,dic= load_dic_text(s)

stopword = ''

for s in iter(raw_input, stopword):

my_list= word_seg(s,dic,max_len);

my_list.reverse();

new_s="";

new_list=;

for on in my_list:

new_s=new_s+on+" ";

print new_s[0:len(new_s)-1]

我不知道為什麼,

python 字典練習題

標準的字典資料 dict 1 兩字典相加 one dict two list 兩個字典相加 合併為 第三個字典 one dict.update two list print one dict 修改字典 修改字典 one dict age 10 print one dict age 等同於 print...

python 字典的綜合練習題

數字重複統計 1 隨機生成1000個整數 2 數字的範圍 20,100 3 公升序輸出所有不同的數字及其每個數字重複的次數 import random all nums 定義空列表儲存數字 for item in range 1000 20,100 print all nums sorted num...

pyhthon字典練習題

有如下集合 11,22,33,44,55,66,77,88,99 將所有大於55的值儲存至第乙個key值中,將所有小於55的值儲存至第二個key值中。方法一 li 11,22,33,44,55,66,77,88,99 dic 定義乙個空的字典 for i in li 設定乙個迴圈 if i 66 設...