現在、辞書内包表記内でリスト内包表記を使用して、リストを値として持つ2つの辞書間の変更を検出しています。
コードは次のようになります。
detectedChanges = {table: [field for field in tableDict[table] if field not in fieldBlackList] for table in modifiedTableDict if table not in tableBlackList}
これにより、各エントリがテーブル名であり、それに関連付けられたリストの変更であるディクショナリが作成されます。
私が得ている問題は、このコードは機能しますが、結果の構造detectedChangesが、テーブル名と空のリストのみを含むエントリで満たされることです(変更が検出されなかったことを意味します)。
現在、これらのエントリを削除するために辞書を後方スイープしていますが、そもそもそれらを辞書に入れないようにしたいと思います。
基本的に、長さのチェックなどを行うことができれば[field for field in tableDict[table]
、key:value エントリを作成する前にそれを検証できます。
現在使用している方法でこれを行う方法はありますか?