2017-03-20 9 views
1

私はexcludeNameexcludeZipCodeという2つのリストと、辞書のリストsearch_resultsを持っています。いくつかの条件に基づいて辞書の一部を(search_copy)にコピーするリストから除外する必要があります。除外された名前のインデックスは、除外された郵便番号のインデックスと同じです。現在、私は完全に困惑していますが、私はそれらを反復して除外するためのさまざまな方法を試しています。私がやってきた別の問題は、ビジネスが何度も追加されていることです。2つのリストから条件を確認してください

excludeName = ['Burger King', "McDonald's", 'KFC', 'Subway', 'Chic-fil-a', 'Wawa', 'Popeyes Chicken and Biscuits', 'Taco Bell', "Wendy's", "Arby's"] 
excludeZip = ['12345', '54321', '45123', '39436', '67834', '89675', '01926', '28645', '27942', '27932'] 
while i < len(search_results): 
     for business in search_results: 
      for name in excludeName: 
       occurrences = [h for h, g in enumerate(excludeName) if g == name] 
       for index in occurrences: 
        if (business['name'] != excludeName[index]) and (business['location']['zip_code'] != excludeZip[index]): 
         search_copy.append(business) 
     i += 1 

は、ここで例の辞書です:これは最初のビジネスエンティティのリストをコピーすることで

{ 
    'location': { 
     'zip_code': '12345' 
    }, 
    'name': 'Burger King' 
} 
+0

のリストを持っていていますexcludeZip?または、excludeName/excludeZipのインデックス付きペアが、コピーされないビジネスのエントリと一致する限り、 – Edward

+0

@Edward名前とzipのインデックスは同じでなければなりません。それが私がスリップするところです。 – Steampunkery

+0

私はそれがペアになっていることを理解していますが、search_resultの企業インデックスは重要ですか?除外されたすべてのペアに対してすべてのビジネスをチェックしたいですか? – Edward

答えて

1

働き、その後、excludedName/excludeZipペアのいずれかの試合を持っているものを削除します。あなたは私が引き受けるれ、最初の大きなリストを反復処理したい最高のパフォーマンスのための理論的には

search_copy=search_results[:] 
for j in search_results: 
    for i in range(0,len(excludeName)): 
     if (j['name'] == excludeName[i]) and (j['location']['zip_code'] == excludeZip[i]): 
      search_copy.remove(j) 

辞書search_results内の各ビジネスエンティティのインデックスはexcludeNameのそれと一致するように、企業

+0

私は午前中にこれをテストします、私はベッドに向かっている。 – Steampunkery

+0

[OK]を、私はあなたのデータに対してテストしました。正常に動作します。 – Edward

+0

@TheWrenchintheSystemこのコードをまだテストする機会はありますか? – Edward

関連する問題