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
Python