【问题标题】:TypeError: 'zip' object is not subscriptableTypeError:“zip”对象不可下标
【发布时间】:2014-12-11 20:01:23
【问题描述】:

我有一个格式为 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

在 python 2.7 中它运行良好,但在 python 3.4 中它给了我以下错误:

return " ".join(list[zip(*ngram)[0]])
TypeError: 'zip' object is not subscriptable

有人可以帮忙吗?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

在 Python 2 中,zip 返回一个列表。在 Python 3 中,zip 返回一个可迭代对象。但是您可以通过调用list 将其添加到列表中,如下所示:

list(zip(...))

在这种情况下,那就是:

list(zip(*ngram))

通过列表,您可以使用索引:

items = list(zip(*ngram))
...
items[0]

等等。

但是如果你只需要第一个元素,那么你就不需要一个列表。你可以使用next

在这种情况下,那就是:

next(zip(*ngram))

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 2016-07-20
    • 1970-01-01
    • 2017-07-15
    • 2021-10-01
    • 2019-12-07
    • 2012-01-09
    • 2021-11-23
    • 2012-02-21
    相关资源
    最近更新 更多