2016-08-10 7 views
-1

私は、ワードネットグラフ内の与えられたsynsetのすべての下位児を再帰的に取得するプログラムを作成しました。Python:私のセットはどのようにリストになっていますか?

ただし、これは私の質問とは関係ありません。

私は基本的にすべてのノードをセットに追加しています。私は取得しています 出力は、しかし、ここに私のコードは

import pickle 
import nltk 
from nltk.corpus import wordnet as wn 

feeling = wn.synset('feeling.n.01') 
happy = wn.synset('happiness.n.01') 

def get_hyponyms(li): 
    return [x.hyponyms() for x in li] 

def flatten(li): 
    return [item for sublist in li for item in sublist] 

def get_hyponyms_list(li): 
    if li: 
     return list(set(flatten(get_hyponyms(li)))) 

def get_the_hyponyms(li, hyps): 
    if li: 
     hyps |= set(li) 
     get_the_hyponyms(get_hyponyms_list(li), hyps) 
    return hyps 

def get_all_hyponyms(li): 
    hyps = set() 
    return get_the_hyponyms(li, hyps) 

feels = sorted(get_all_hyponyms([feeling])) 
print type(feels) 

の出力がthis-

<type 'list'> 

リスト

ですなぜこの出来事はありますか?

+4

'(ソート)sorted'リストを返す' 'ので、リスト –

+3

を作成します。セットは順序付けされていないので、セットを返すことはできません。 – khelwood

+0

ソートされたセットを元に戻すことを期待している場合は、セットを誤解しています。彼らは注文されていないし、注文することもできない。 – cdarke

答えて

3

sorted()リストを作成します。単純なテストを行うと、この動作は明らかです。 Python documentationは、「設定されたオブジェクトはであり、順序付けされていない別のハッシュ可能オブジェクトのコレクション」と述べています。

>>> x = {1,3,2} 
>>> sorted(x) 
[1, 2, 3] 
関連する問題