Python:我的设置如何变成列表?

时间:2016-08-10 15:39:41

标签: python

我编写了一个程序来递归获取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'>

为什么会这样?

1 个答案:

答案 0 :(得分:3)

sorted()创建一个列表,如果你做一个简单的测试,这个行为是明确的。 Python documentation表示“set object是一个 unordered 不同的可哈希对象的集合”。

>>> x = {1,3,2}
>>> sorted(x)
[1, 2, 3]