如何将集合添加到列表? (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_eval
将input()
的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(','))))
我目前正在使用 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_eval
将input()
的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(','))))