2012-04-13 7 views
0

リスト内の単語の類似度の最小値を返す必要がありますが、平均値に単語列の値を割り当てる方法はわかりません例えば、リストの中で['my', 'bro', 'myline']はもちろん単語の比較値が最小であるため、比較値とともに返される'bro'が必要です(これは私がすでに知っている方法です...入れ子に値を割り当てる方法を知る必要がありますループ)。入れ子のループ内で最小の平均を返す方法

final_tup =() 
ave_list = [] 
for word in final_list: 
    word1 = word 
    sum = 0 
    for word in final_list: 
     word2 = word 
     if word2 != word1: 
      num = cossim(word1,word2) 
      sum = sum + num 
    average = float(sum/(len(final_list)-1)) 
    ave_list.append(average) 
+2

'ちょうどどこに割り当てるネストされたloops'内の値を代入する方法を知っておく必要がありますか?ちょうどあなたが行方不明のものは、あなたのコードはほぼ完全ではないようですが、ほぼ完成しています。申し訳ありませんが、私は正確に何を求めているのか理解できません:\ – amit

+0

not-shatnessの面では、 'word_最後に' word1を、 'final_list'に' word2'を 'word'でループするのではなく、 。おそらく 'sum + = cossim(word1、word2)'もやっているはずです。 – Dougal

+0

のように比較されている各単語1について...その単語を割り当てたり、その平均値と比較したいのですが。 –

答えて

0
from operator import itemgetter 

# Make the word list. 
word_list = ['my', 'bro', 'myline'] 

# Do your code here to create ave_list 

# Fetch the min index and min value of ave_list 
min_index, minvalue = min(enumerate(ave_list), key = itemgetter(1)) 

# Now get the word at the same min index location. 
min_word = word_list[min_index] 
+0

これを待ってください。同じ最小値の2つのインデックスがあるとどうなりますか?出力に複数の単語をどのように出力するのですか? –

+0

たとえば、インデックス1とインデックス11に同じ最小平均値が設定されているとします。これらの単語を両方とも出力するにはどうすればよいですか? –

+0

私は明日それを変更できますが、1つの良い方法は平均を格納するためにNumPy配列を使用するように切り替えることです。 – ely

関連する問題