Python: リストなどのコレクションの要素を結合する join()
Pythonではリストやタプル、辞書などのコレクションの要素を結合して
文字列を生成することができます。
その場合はstrオブジェクトのjoin()メソッドを使います。
例えば ["a", "b", "c"]
というリストの要素を結合して
"a-b-c"
という1つの文字列を作れます。
ここではjoin()を使った要素結合の方法を紹介します。
join()の書式
join()はコレクションのメソッドではなく、 strオブジェクトのメソッドです。 まず結合文字(文字列)があって、 結合文字のメソッドとしてjoin()メソッドを記述します。
書式
"結合文字".join(イテラブルなオブジェクト)
join()メソッドの引数は、リストなどのイテレート可能な(繰り返し処理が可能な) オブジェクトです。
注意点として、コレクションの要素が数値の場合はエラーが発生します。
リストの要素を結合
# リスト li = ["a", "b", "c"] # - ハイフンで結合 s1 = "-".join(li) print(s1) # a-b-c # , カンマで結合 s2 = ",".join(li) print(s2) # a,b,c # そのまま結合 s3 = "".join(li) print(s3) # abc
次のコードのように、 リストの要素内容が数値の場合はエラー 「TypeError」が発生するので注意が必要です。
li = [1, 2, 3] print("-".join(li)) # エラー # 実行結果 エラー内容 print("-".join(li)) TypeError: sequence item 0: expected str instance, int found
タプルの要素を結合
# タプル t = ("a", "b", "c") # - ハイフンで結合 print("-".join(t)) # a-b-c # , カンマで結合 print(",".join(t)) # a,b,c # そのまま結合 print("".join(t)) # abc
辞書の要素を結合
注意点として、 辞書の順序が保証されているのはPython 3.7以降です。 それより前のバージョンの場合は順序が保証されていません。
join()の引数に辞書を指定した場合、 キーの部分が結合されます。
# 辞書 d = {"a": "blue", "b": "red", "c": "yellow"} # - ハイフンで結合 print("-".join(d)) # a-b-c
キーではなく、値の部分を結合したい場合は、 values()メソッドを使って次のように指定します。
# 辞書 d = {"a": "blue", "b": "red", "c": "yellow"} # - ハイフンで結合 print("-".join(d.values())) # blue-red-yellow
セットの要素を結合
セットの場合、順序は保証されていません。 ですから次のように順番が違う場合もあります。
# 辞書 s = {"a", "b", "c"} # - ハイフンで結合 print("-".join(s)) # b-a-c # , カンマで結合 print(",".join(s)) # b,a,c # そのまま結合 print("".join(s)) # bac