{tuple:int}の辞書を作りたいが、TypeErrorが出る
解決したいこと
A,B,C,DをGUの商品とし、その組み合わせの共起回数をカウントするプログラムを書いています。
item_pairs_listには、1つのコーディネート内で出現したアイテムの総当たりペアのtupleが格納されています。
(1つのコーディネートなので共起回数はすべて1なので当たり前と思われるかもしれませんが、これを他のコーディネートでも繰り返すことで、多くのコーディネートで最も共起しているペアを知りたいためです)
item_pairs_list = [(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)]
具体的にAやBは,
A=
{'imgurl': 'https://image.uniqlo.com/GU/ST3/jp/imagesgoods/340538/item/jpgoods_09_340538.jpg?width=149&height=149',
'title': 'マルチウェイワンピース(半袖)Q',
'color': '09 BLACK'}
B={'imgurl': 'https://image.uniqlo.com/GU/ST3/jp/imagesgoods/338664/item/jpgoods_01_338664.jpg?width=149&height=149',
'title': 'リネンブレンドオーバーサイズハーフスリーブジャケット',
'color': '01 OFF WHITE'}
のように辞書です。
int=共起回数として、
edge_table={(A,B):1, (A,C):1...}
のような辞書を作りたいです。
具体的には(要素は一つですが)このような形です。
edge_table=
{({'imgurl': 'https://image.uniqlo.com/GU/ST3/jp/imagesgoods/340538/item/jpgoods_09_340538.jpg?width=149&height=149',
'title': 'マルチウェイワンピース(半袖)Q',
'color': '09 BLACK'},
{'imgurl': 'https://image.uniqlo.com/GU/ST3/jp/imagesgoods/338664/item/jpgoods_01_338664.jpg?width=149&height=149',
'title': 'リネンブレンドオーバーサイズハーフスリーブジャケット',
'color': '01 OFF WHITE'})
:
1
}
しかし、TypeErrorが出てしまいます。
タプルはキーにとれないのでしょうか?
よろしくお願いします。
発生している問題・エラー
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-bc6974d0f421> in <module>()
11 edge_table[item_pairs] = edge_table[item_pairs]+1
12 else:
---> 13 edge_table[item_pairs] = 1
14
15
TypeError: unhashable type: 'dict'
該当するソースコード
for item_pairs in item_pairs_list:
print(item_pairs)
#以下print出力
# ({'imgurl': 'https://image.uniqlo.com/GU/ST3/jp/imagesgoods/340538/item/jpgoods_09_340538.jpg?width=149&height=149',
# 'title': 'マルチウェイワンピース(半袖)Q',
# 'color': '09 BLACK'},
# {'imgurl': 'https://image.uniqlo.com/GU/ST3/jp/imagesgoods/338664/item/jpgoods_01_338664.jpg?width=149&height=149',
# 'title': 'リネンブレンドオーバーサイズハーフスリーブジャケット',
# 'color': '01 OFF WHITE'})
if item_pairs in list(edge_table.keys()):
edge_table[item_pairs] = edge_table[item_pairs]+1
else:
edge_table[item_pairs] = 1