1. ホーム
  2. python

[解決済み] TypeError: 'zip' オブジェクトは添え字がありません。

2023-03-25 08:44:36

質問

私は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

python2.7ではうまくいったのですが、python3.4では以下のようなエラーになります。

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

誰か助けてください。

どのように解決するのですか?

Python 2の場合。 zip はリストを返しました。Python 3 では zip は反復可能なオブジェクトを返します。しかし、これをリストにするためには list というように、リスト化することができます。

list(zip(...))

この場合、そうなります。

list(zip(*ngram))

リストでは、インデックスを使用することができます。

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

など

しかし、最初の要素だけが必要なのであれば、厳密にはリストは必要ないのです。単に next .

この場合、そうなります。

next(zip(*ngram))