2017-06-06 11 views
0

私は辞書とメイン辞書のリストを持っています。 ディクショナリのリスト形式は次のとおりです。値には、プログラム内で動的に変化する変数が割り当てられます。別の辞書リストのキーの値に基づいて辞書を削除する

list_dict = [{'url': url_value , 'title' : title_value}, {'url': url_value , 'title' : title_value}] 

main_dict = {"execution_time": "2017-06-05", "target_url": "http://www.bloomberg.com", "data": [{ "url" : url1}, { "url" : url2}], "name": "Michael", "occupation": "software"} 

main_dict内のデータの下に任意のURL値(URL1またはURL2)がlist_dict内の辞書のいずれかでurl_valueと同じ値であれば、私はデータからその辞書を削除したいです。

出力:と仮定url_valueは、URL1です:

main_dict = {"execution_time": "2017-06-05", "target_url": "http://www.bloomberg.com", "data": [{ "url" : url2}], "name": "Michael", "occupation": "software"} 

私はしかし、私が試したすべてがうまくいきませんでした、dictの内包表記を使用して考えました。私は出発点や指導に感謝します。

答えて

0

これはトリックを行う必要があります。

my_list = [list_dict_data['url'] for list_dict_data in list_dict] 
delete_list = [] 

for i in range(len(main_dict['data'])): 
    if main_dict['data'][i]['url'] in my_list: 
    delete_list.append(i) 

for i in delete_list: 
    del main_dict['data'][i] 

をだから何それがないことである:

  1. 一覧すべてのURLがメイン辞書内のすべてのURLを通じて
  2. list_dict反復からチェックして比較しますそれはlist_dictのデータです
  3. インデックスを削除リストに追加
  4. リストを削除し、main_dictの対応するインデックスを削除してください。

これは本当に原油として最適化してみてください。