📝

もっと簡単で高速に一意なデータの判別がしたい

2023/08/29に公開

https://qiita.com/items/a53faad2d3ad566f9b69


お詫び

Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。


結構簡単に出来るみたいです。
当初は素直にlist作ってその中にtargetが存在するかチェックするループを使って…としていたんですが、数によってはめちゃくちゃ重くなるforを実行してしまいます。
これがイケてないなぁ、と思った時はこういう書き方にすると速くなるようです。

def uniq(target):
    if cache.has_key(target) == False:
        cache[target] = target
        return False
    else:
        return True

cache = {}
for target in (hoge, fuga...):
   if uniq(target) == True:
       print '登録済み'
   else:
       print '登録しました'

私の環境では改善されたんですが、ケースバイケースの面はあるかも知れません。

2018/02/10 追記

<a href="https://qiita.com/nomurasan/items/a53faad2d3ad566f9b69#comment-280a52d8e401369f0d30">とてもステキなコメント</a>をいただきました!
私がまだ検証出来ていないので記事にうまく反映させられないため、ご紹介に留めます。

GitHubで編集を提案

Discussion