私は現在、そうのような辞書を持っている:リストを値として辞書を逆転させる最も良い方法は?
app_dict = {test1 : [[u'app-1', u'app-2', u'app-3', u'app-4']]}
私は(別の辞書での作業であることが証明された)辞書を反転させる機能を持っています。
def reverse_dictionary(self, app_dict):
""" In order to search by value, reversing the dictionary """
return dict((v,k) for k in app_dict for v in app_dict[k])
私は次の操作を実行したときに、私はエラーを取得:
data = reverse_dictionary(app_dict)
print data
ERROR:
return dict((v,k) for k in app_dict for v in app_dict[k])
TypeError: unhashable type: 'list'
私はなぜそこにわからないんだけど、私はわからないんだけど、私は問題は私の辞書が構成されている方法であると思います私のリストに二重括弧が付いているので、削除することはできません。 reverse_dictionary関数をapp_dictと連携させるために、どうすれば修正できますか?
編集:私はこの時点でnew_dictを印刷するとき、私の辞書の値は(二重括弧付き)次の形式で示すことが
new_dict = collections.defaultdict(list)
app_dict = collections.defaultdict(list)
#at this point, we have filled app_dict with data (cannot paste here)
for o, q in app_dict.items():
if q[0]:
new_dict[o].append(q[0])
注: [[u'app-1' 、u'app -2' 、u'app-3' 、u'app-4' ]]
私は追加行を変更する場合: new_dict [O] .append(Q [0] [0]) どのI仮定は、これの代わりに、最初の値をリストに追加するだけです。
[u'app-1']
私はこれが私が問題になっていると信じています。リストから外括弧を正常に削除できません。
ヒント:二重括弧別のリスト – Izkata
内部リストされている私は、これは問題ですけど、私はそれを修正するかどうかはわかりません – david
私の更新記事を参照してください。 – david