Python:我的集合是如何变成一个列表的?

Python:我的集合是如何变成一个列表的?,python,Python,我编写了一个程序,递归地获取wordnet图中给定语法集的所有下义子词 然而,这与我这里的问题无关 我基本上是把我通过的所有节点添加到一个集合中。 然而,我得到的输出是一个列表 这是我的密码 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

我编写了一个程序,递归地获取wordnet图中给定语法集的所有下义子词

然而,这与我这里的问题无关

我基本上是把我通过的所有节点添加到一个集合中。 然而,我得到的输出是一个列表

这是我的密码

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'>

为什么会发生这种情况?

sorted()
创建了一个列表,如果您做了一个简单的测试,这种行为很明显。Python说“set对象是不同的散列对象的无序集合”


sorted()
创建一个列表,因为
sorted
返回一个列表。它无法返回集合,因为集合没有排序。如果您希望返回已排序的集合,那么您就误解了集合。它们不是,也不能被订购。是的,是的。。。这是我的疏忽。我忘记了sorted()方法。@Nikhiprabhu:
sorted()
是内置函数,不是方法。这就是重点。与
list.sort()
方法不同,
sorted()
将对任何iterable进行排序,但无论该对象是什么,它都只返回一个列表。
>>> x = {1,3,2}
>>> sorted(x)
[1, 2, 3]