我编写了一个程序来递归获取wordnet图中给定synset的所有下位子项。
但是,这与我的问题无关。
我基本上将我传递给的所有节点添加到一个集合中。 但是,我得到的输出是一个列表
这是我的代码
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)
输出是这个 -
<type 'list'>
为什么会这样?
答案 0 :(得分:3)
sorted()
创建一个列表,如果你做一个简单的测试,这个行为是明确的。 Python documentation表示“set object是一个 unordered 不同的可哈希对象的集合”。
>>> x = {1,3,2}
>>> sorted(x)
[1, 2, 3]