2

文字列のリストがあります:

my_list = ['Paul', 'Robinson', 'Hismith', 'Smith']

それをフィルタリングし、関連性によって結果を並べ替える必要があります。

> filter_list(my_list, 'smith')
> ['Smith', 'Hismith']
> 
> filter_list(my_list, 'paul')
> ['Paul']

私のリストは小さいので、できるだけ少ないロジック/ライブラリを使用できればいいのにと思います。

これをどのように行いますか?

ありがとう!

4

2 に答える 2

7

cutoff=次のようなことを試してください (ただし、オプションを微調整したい場合があります)。

import difflib

my_list = ['Paul', 'Robinson', 'Hismith', 'Smith']
print difflib.get_close_matches('Paul', my_list)
# ['Paul']
print difflib.get_close_matches('Smith', my_list)
# ['Hismith', 'Smith']
于 2012-07-17T10:44:19.400 に答える
6

「関連性」とは何かを伝えるのは難しいです。私の答えでは、検索対象wordが要素内にある場合にのみ受け入れ、結果を長さで並べ替えます (100% の一致が最初に表示される可能性が高い)。

def filter_list(li, word):
    return sorted((elem for elem in li if word.lower() in elem.lower()), key=len)
于 2012-07-17T10:38:07.557 に答える