リスト値を使用した辞書の反転: 解決策
この記事では、リスト値を使用した辞書を反転するという課題について検討します。キーがファイル名で、値がそれらのファイルに含まれる単語のリストであるインデックス辞書があるとすると、単語がキーで値がファイル名のリストである逆引き辞書を作成することを目指します。
提供されている反転関数 invert_dict は、は、「TypeError: unhashable type: 'list'」で失敗するため、キーとしてリスト値を持つ辞書には適用できません。この制限は、辞書内のキーはハッシュ可能でなければならないが、リストはハッシュ可能ではないという事実から生じています。
このハードルを克服するには、元の辞書を反復処理し、setdefault を使用して新しい辞書を作成するカスタム アプローチを利用できます。 。具体的には、元の辞書内の各キーの値リストを反復処理し、対応するキーを新しい逆引き辞書内の単語の値として追加します。
このアプローチの実装例は次のとおりです。
inverse = {}
for k,v in index.items():
for x in v:
inverse.setdefault(x, []).append(k)
このソリューションは、逆引きされた辞書にキーが存在しない場合に setdefault メソッドを使用して新しいリストを作成することにより、元の辞書のリスト値を処理します。または、キーがすでに存在する場合は既存のリストに追加します。
その結果、単語がキーで値がファイル名のリストである逆引き辞書が得られます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3