mr-csce’s diary

ブログの説明

dict.fromkeys()で作成したdictのvalueのlistを編集するとすべてのkeyのlistが変わってしまう件

[Python] dict.fromkeys()で作成したdictのvalueのlistを編集するとすべてのkeyのlistが変わってしまう件

dict.fromkeys()とは

dict.fromkeys()は、下記のように同じ値をvalueに持つdict型のデータを作成します。

>>> test_dict = dict.fromkeys(["key1", "key2"], "value")
>>> test_dict
{'key1': 'value', 'key2': 'value'}

dict.fromkeys()で作成したdict型のデータと、普通のdict型のデータの違い

下記2つの辞書は一見同じに見えます。

>>> test_dict = dict.fromkeys(["a", "b", "c"], [])
>>> test_dict
{'a': [], 'b': [], 'c': []}

>>> test_dict2 = {"a": [], "b":[], "c":[]}
>>> test_dict2
{'a': [], 'b': [], 'c': []}

しかしながら厳密には異なります。 dict.fromkeys()では、valueがlistやdict型などmutableな型であっても完全に同じデータがvalueになります。

>>> test_dict = dict.fromkeys(["a", "b", "c"], [])
>>> test_dict
{'a': [], 'b': [], 'c': []}

言い換えると、各要素は同じメモリ領域に確保されています。

>>> id(test_dict["a"])
139793884250952
>>> id(test_dict["b"])
139793884250952
>>> id(test_dict["c"])
139793884250952

一方、下記のように素直にdict型のデータを生成した場合、各要素はそれぞれ別のメモリ領域に確保されます。

>>> test_dict2 = {"a": [], "b":[], "c":[]}
>>> test_dict2
{'a': [], 'b': [], 'c': []}

>>> id(test_dict2["a"])
139793884251016
>>> id(test_dict2["b"])
139793884251208
>>> id(test_dict2["c"])
139793884251528

したがって、両者の辞書は次のような違いが現れます。

>>> test_dict["a"].append("A")
>>> test_dict
{'a': ['A'], 'b': ['A'], 'c': ['A']}

>>> test_dict2["a"].append("A")
>>> test_dict2
{'a': ['A'], 'b': [], 'c': []}

結論

mutableな型をvalueに持つdict型のデータをdict.fromkeys()で作成する場合は注意が必要です。

機械学習で算出したコストパフォーマンスで家賃を探すWebアプリケーションを作った。(今は公開停止してます)

2018/4/2追記:今は公開停止してます。

ホットエントリーにて下記を見つけた。 機械学習でおトクな物件を探す,という趣旨の記事である。 shokosaka.hatenablog.com

ブックマークのコメントには後述のような機械学習で賃貸を探したい,という意見があった。そこで今回,私は機械学習用いて,オトクな物件を探してくれるWebアプリケーションを作成した。

URL: http://rentcost.net 2018/4/2追記:今は公開停止してます。

使い方

  • http://rentcost.netにアクセス
  • 画面上部の"Search"より物件を検索できます。
  • スマートフォンの方は画面右上の三本線をタップ→"Search"より物件を検索することができます。
  • 検索画面の並び替え欄に割合でコストパフォーマンスが良い順,金額でコストパフォーマンスが良い順などのオプションを用意しました。

特徴

  • 単身者向けに家賃4〜12万程度の物件のみ参照した。
  • %で探せるようにした。
  • 東京都内のみ対応
  • 皆様が検索可能なものは11/9, 10の新着物件のみ(それ以前のものを使用)

機械学習を使って東京23区のお買い得賃貸物件を探してみた - データで見る世界

面白い。値差ではなく率で並べてみてほしい!

2017/11/09 22:41
b.hatena.ne.jp
機械学習を使って東京23区のお買い得賃貸物件を探してみた - データで見る世界

これから賃貸で不動産貸し出す人の価格設定にも使えそうですね

2017/11/09 22:43
b.hatena.ne.jp
機械学習を使って東京23区のお買い得賃貸物件を探してみた - データで見る世界

単身向けにやって欲しかった🏠

2017/11/09 19:51
b.hatena.ne.jp

お願い

  • 記事の著者及びSUUMOとは全く関係ありません。何か問題があれば記事及びサイトを削除しますので,ご連絡ください。

作ってみた感想

  • 全物件のランキング1位,2位がやや人間の感覚と外れてるが,全体的に上位の物件はお得感はある。なぜ1位,2位がイケてないか,は今後気が向けば調査する。