我有格式为token/tag的标记文件,我尝试了一个函数,它返回一个带有来自(word,tag)列表的单词的元组.
def text_from_tagged_ngram(ngram):
if type(ngram) == tuple:
return ngram[0]
return " ".join(zip(*ngram)[0]) # zip(*ngram)[0] returns a tuple with words from a (word,tag) list
Run Code Online (Sandbox Code Playgroud)
在python 2.7中它运行良好,但在python 3.4中它给我以下错误:
return " ".join(list[zip(*ngram)[0]])
TypeError: 'zip' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
我有两个列表,我需要使用Borda位置排名对它们的元素进行排名。所以我做了这个功能,但是有这个错误:
TypeError: unhashable type: 'list'.
Run Code Online (Sandbox Code Playgroud)
如其他答案所示,问题是我无法将列表用作字典中的键,因为字典键必须是不可变的,所以我改用元组,但错误仍然存在。
The files of the two lists look like this
list1 = [([('diritti', 'S'), ('umani', 'A')]), ([('violazioni', 'S'), ('dei', 'E'), ('diritti', 'S'), ('umani', 'A')]), ([('forze', 'S'), ('di', 'E'), ('sicurezza', 'S')]), ([('violazioni', 'S'), ('dei', 'E'), ('diritti', 'S')]), ([('Nazioni', 'SP'), ('Unite', 'SP')]), ([('anni', 'S'), ('di', 'E'), ('carcere', 'S')])]
list2 = [([('anni', 'S'), ('di', 'E'), ('carcere', 'S')]), ([('diritti', 'S'), ('umani', 'A')]), ([('forze', 'S'), ('di', 'E'), ('sicurezza', 'S')]), ([('violazioni', 'S'), ('dei', 'E'), ('diritti', 'S'), ('umani', 'A')]), ([('violazioni', 'S'), ('dei', …
Run Code Online (Sandbox Code Playgroud) 我有一个表达式列表,我想替换文件中的每个表达式.
我试过这段代码
for a in ex:
if a in file.split():
file = file.replace(a, '[' + ' ' + a + ' ' +']')
print file
Run Code Online (Sandbox Code Playgroud)
我的代码也替换了括号中另一个表达式的表达式.所以我想要的是只替换括号中不属于另一个表达式的表达式.如何获得理想的结果?