Python: how to sort a list of strings by substring relevance?

后端 未结 3 474
[愿得一人]
[愿得一人] 2021-01-16 06:38

I have some list of strings, for example:

["foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT",
"SOME foo TEXT",
"         


        
3条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-16 06:58

    See your friendly neighborhood sorting tutorial. You'll need a sort with a key. Here's a trivial function to give you the idea; it finds the distance between the two words, returning that as the difference metric.

    sentence = ["foo bar SOME baz TEXT bob",
                "SOME foo bar baz bob TEXT",
                "SOME foo TEXT",
                "foo bar SOME TEXT baz",
                "SOME TEXT"]
    
    def match_score(sentence):
        some_pos = sentence.find("SOME")
        text_pos = sentence.find("TEXT")
        return abs(text_pos - some_pos)
    
    sentence.sort(key = lambda x: match_score(x))
    
    for item in sentence:
        print(item)
    

    Output:

    foo bar SOME TEXT baz
    SOME TEXT
    foo bar SOME baz TEXT bob
    SOME foo TEXT
    SOME foo bar baz bob TEXT
    

提交回复
热议问题