Operation KiWi

一生使える言語はPythonだと信じてる

set型<==>dict型を相互に変換したいけど無理だった話(Python3)

なんか5分くらい詰まったので…こういう時間ってとても勿体無いと思うのですw

辞書(dict)から集合(set)へ

dictionary = {"a":"b", "c":"d", "e":"f"}
convert_set = set(dictionary)
convert_set

結果

{'c', 'a', 'e'}

辞書から集合へ変換すると、値(value)が失われてkeyだけが残ってますね。

集合(set)から辞書(dict)へ

dict(convert_set)

結果

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 1; 2 is required

その状態でsetdictに変換してみると…まあこうなりますよね。がないので当然エラーを吐きます。

結論

情報が失われているので、相互変換は無理だった。ちゃんちゃん。。

それでも俺はdict型が良い

完全に私だけでしょうが、yamlファイルに書き出したい時、set型だと微妙に不都合なケースがあります。何でも良いから、keyだけでも、この際良いからdict型で保存したい…と10秒くらい考えて書いたコードが以下の通りです。

無理やり辞書化

{x:x for x in convert_set}

結果

{'c': 'c', 'a': 'a', 'e': 'e'}

で、出来たー!!!!

終わり

無理やりですが、難局を乗り切りました~とりあえず内包表記最高!!!

入門 Python 3

入門 Python 3

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング