如何将集合添加到列表? (python3x)

How to add a set to a list? (python3x)

我目前正在使用 nltk 模块研究语义。读取的数据对列表中的每个条目使用以下格式:

('dog', {'1','2'})

所以我尝试为用户创建一个前端来输入他的数据集。我现在面临的问题是如何将集合插入条目中。 我尝试使用 shell:

v = []
v.append(('dog',set(['1','2'])))
v

给了我想要的东西,但不知何故我的代码没有复制它,而是给了我:

('dog', '{'1','2'}')

片场有额外的括号。

这是我的代码:

...
def addpredicate(v):
print('Which predicate would you like to add? \nThe format is p,{\'q\'}...')
v.append(tuple(input().split(',')))
print(v)
choose = input(print('If you would like to add another entry...'))
...

基本上,我发现我的 v.append() 很可能是错误的,但我不知道我还能如何在不强制这样的情况下将集合添加到列表中。我想去掉出现的引号也是一种选择,但我也不知道该怎么做。

使用ast.literal_evalinput()的return值,即字符串,转换为实际的数据结构:

import ast

v.append(ast.literal_eval(input()))

您应该向用户询问单个令牌,然后将它们添加到集合 "manually",而不是依赖用户输入正确的 Python 代码(即使他们可能会输入)。

试试这个:

print('The format is \'p\',{\'q\'}...')
predicate,sets = input().split(',',1)
v.append((predicate, set(sets[1:-1].split(','))))