Python でリストを結合すると「TypeError: list indices は str ではなく、整数またはスライスである必要があります」というメッセージが表示されるのはなぜですか?

Patricia Arquette
リリース: 2024-11-14 15:52:02
オリジナル
301 人が閲覧しました

Why Am I Getting

リストのマージ中に Python で「TypeError: list indices は str ではなく、整数またはスライスである必要があります」を処理します

Python で、アクセスしようとしています文字列インデックスを使用するリスト要素は、多くの場合、「TypeError: リスト インデックスは整数であるか、またはstr' エラーではなく、スライスです。このエラーは通常、2 つのリストを 1 つの配列にマージするときに発生します。

このエラーを回避するには、リスト要素へのアクセスに使用されるインデックスが整数であることを確認することが重要です。以下は、提供された Python コードの特定の問題と、それらに対処する正しい方法です。

  1. array_length を整数に変換する: 元のコードでは、array_length が割り当てられています。 array_dates の長さの文字列表現。代わりに、これは len(array_dates) を使用して取得できる整数の長さの値である必要があります。

    array_length = str(len(array_dates))
    # Convert to:
    array_length = len(array_dates)
    ログイン後にコピー
  2. Using range() for Loop: forループは、result_array のインデックスを反復処理します。ただし、ループ定義では、文字列である array_length を反復可能として使用します。代わりに、 range(array_length) を使用して整数を反復処理します。

    for i in array_length:
    # Convert to:
    for i in range(array_length):
    ログイン後にコピー
  3. 自動インデックス インクリメント: 元のコードでは、i は反復ごとに手動で増加します。 for ループによってインデックス変数が自動的にインクリメントされるため、これは不要です。

    i += 1
    # Remove this line
    ログイン後にコピー

zip() を使用した代替アプローチ:

または、同じ長さの 2 つのリストをマージするには、zip() 関数を使用します。この関数は、各リストから対応する要素を取得し、次の新しいリストを作成します。タプル。このアプローチは多くの場合、より簡潔であり、手動でインデックスを作成する必要がなくなります。

dates = ['2020-01-01', '2020-01-02', '2020-01-03']
urls = ['www.abc.com', 'www.cnn.com', 'www.nbc.com']

csv_file_path = '/path/to/filename.csv'

with open(csv_file_path, 'w') as fout:
    csv_writer = csv.writer(fout, delimiter=';', lineterminator='\n')
    result_array = zip(dates, urls)
    csv_writer.writerows(result_array)
ログイン後にコピー

以上がPython でリストを結合すると「TypeError: list indices は str ではなく、整数またはスライスである必要があります」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート