リストのマージ中に Python で「TypeError: list indices は str ではなく、整数またはスライスである必要があります」を処理します
Python で、アクセスしようとしています文字列インデックスを使用するリスト要素では、「TypeError: リスト インデックスは str ではなく、整数またはスライスである必要があります」エラーが発生することがよくあります。このエラーは通常、2 つのリストを 1 つの配列にマージするときに発生します。
このエラーを回避するには、リスト要素へのアクセスに使用されるインデックスが整数であることを確認することが重要です。以下は、提供された Python コードの特定の問題と、それらに対処する正しい方法です。
array_length を整数に変換する: 元のコードでは、array_length が割り当てられています。 array_dates の長さの文字列表現。代わりに、これは len(array_dates) を使用して取得できる整数の長さの値である必要があります。
array_length = str(len(array_dates)) # Convert to: array_length = len(array_dates)
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):
自動インデックス インクリメント: 元のコードでは、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 サイトの他の関連記事を参照してください。