-1

そのため、現在、テキストファイルの内容からハッシュを生成して辞書に保存するスクリプトがあり、2番目のテキストファイルに移動してそこからハッシュを生成し、それらを辞書と比較します。ある種の不完全なマッチングを実装しようとしています。たとえば、いくつかの許容範囲をプログラムしたい: たとえば、ハッシュの 3 つおきの要素が一致するプロトコルにとって重要でないようにしたいので、不一致がある場合は妨げられずに反復を続けます。これを行うことは可能ですか?

さらに、これは別のケースですが、条件付きの不一致を判断することは可能でしょうか? たとえば、不一致がある場合でも、特定の位置に母音が必要な場合のように、「一致」と見なされる要素がいくつかありますが、どの母音が表示されても問題ありませんでした。

要約すると、スクリプトが次のいずれかになるようにしようとしています

チェック、チェック、無視、チェック、チェック、無視など

また

チェック、チェック、条件不一致?、チェック、チェック、条件不一致?、など

ハッシュに沿って。これは実行可能ですか?

編集:実際にはハッシュチェックではなく、文字列比較のほうが多いと思います。微調整しようとしている関連コードは次のとおりです。

# hash table for finding hits
lookup = defaultdict(list)

# store sequence hashes in hash table
for i in xrange(len(file1) - hashlen + 1):
    key = file1[i:i+hashlen]
    lookup[key].append(i)

# look up hashes in hash table
hits = []
for i in xrange(len(file2) - hashlen + 1):
    key = file2[i:i+hashlen]

    # store hits to hits list
    for hit in lookup.get(key, []):
        hits.append((i, hit))

ここで、hashlen は、生成するハッシュの長さです (したがって、バッファーなので、ファイルの末尾から外れることはありません。

4

1 に答える 1

0

コメントしたように、ハッシュには順序がありません。OrderedDict の使用を検討できます。

しかし、このコードが役立つかもしれません。

skip_rate = 3

for index, (key, value) in enumerate(your_hash.items()):
    if index % skip_rate != 0:
        do_something(key, value)
于 2013-09-16T06:44:33.430 に答える