比较两个列表,并采用比较项目的最小距离

时间:2019-11-03 17:06:21

标签: python

我有两个清单。 一种是嵌套的,另一种是我要与嵌套列表中的项目进行比较的。

这是嵌套列表:

relevant_raw = [['1', 'Katharinenstr.', 'FaUobstr.', 'u,Wilhelmsplatz', 'Nordseite', 'I\n'], ['2', 'i', 'Iakobstr.', 'Katharinenstr.u.Haupt-', 'Gesamtbild', '1\n'], ['3', 'Katharinenstr.', 'Silhelrnsplatz', 'u.Jakobskr,', 'Nordseite', 'I\n'], ['4', 'ilhelmsplatz', '|', 'Katharinen-u.Hauptstätterstr,', 'Nordostseite', 'I\n'], ['5', 'jHauptstätterstr,', 'N', 'r', '.', '1', '4', 'u.', 'Chrlstosstr.', 'Wilhelmsplatz', 'Nordwest-', 'I\n'], ['6', '"', 'von', 'Wilhelmsplatz', 'nach', 'Tüdwiesten', 'I\n'], ['7', 'Wilhelmsplatz', 'alter', 'Marktbrunnen,', 'SUdwestjseite', 'I\n'], ['9', 'Schlosscrstr.', 'Einblick', 'von', 'Wilhelms^latz', 'I\n'], ['11', ';', '"', ':', 'Wilhelmsplatz', '«.Kaufhaus', ';', 'Nordwestseite', 'I\n'], ['.12', '!', 'Torftr.', '[Einblick', 'v.Hauptstätterstr.', '|', 'I\n'], ['14', '"', 'iNr.34', 'und', 'Brückenstr.', '"', 'I\n'], ['16', 'I', 'Hauptstätterstr.', ';', "Hs.i'ir.24", 'und', 'Hs.Nr.2', '|', 'Nordwestseite', 'I\n'], ['18', 'I', 'Hauptstätterftr.Ö', 'Einblick', 'Marktstr.', 'I\n'], ['IHolzstr.', 'Wagnerstr.u.Danziger', 'Frei-', 'Nordwestseite', 'j\n'], ['20', 'IHolzstr.', 'Haupt-', 'Blick', 'nach', 'SUdwesten', '1', 'I\n'], ['21', 'Rosenstr.', 'Holz-u.Untere', 'Bach', 'Str.', 'Südseite', '|\n'], ['22', 'Holzstr.2', 'u.', '|', 'Lederstr.', 'Nordseite', 'I\n'], ['24', 'Holzstr.', '|', 'Danziger', 'Freiheit', 'und', 'Kauf-', 'NordwestseiteM;', '*', 'I\n'], ['28', 'IRosenstr.', 'j', 'Eßlinger', '8', 'tr»u,', 'Holzstr.', '|\n'], ['I', '30', 'jEPlinget', 'Str.', 'Wagnerstr.u.', 'Leonhardsplatz', 'Westseite\n'], ['I', '31', 'bagnerstr.', 'Eßlinger-', 'und', 'Holzstr.', 'Südseite\n'], ['I', '32', 'Eßlinger', 'Str.', 'Wagnerstr.', 'u.', 'Hs.Nr.19', 'Nordwestseite\n'], ['I', '33', 'jLeonhardsplatz', '!Blick', 'gegen', 'Hauptstätterstr.', '|\n']]

This is the list I want to compare it with:
column_3_list = [ 'Nordostseite', 'Nordwestseite', 'Südwestseite', 'Südseite', 'Westseite']

最后,我想要一个列表,该列表具有与嵌套列表相同数量的项。 它应该比较嵌套列表中的所有项目,并在找到第一个具有小于5的levenshtein距离的项目后停止。但是,还应该检查,如果比较列表中有一些单词,其距离可能小于将比较列表中具有最低levenshtein值的项追加到column_3之类的空列表中。 如果在嵌套列表中找不到任何内容,则应将'x'附加到空列表中。

我在获取levenshtein等方面没有问题。我只是找不到找到距离最低的单词的解决方案。而且我的else语句也不起作用,因此'x'周围太多了。我真的希望有人能提供帮助。 我还尝试了像字典这样的东西(它仍然在代码中,但是没有锻炼)

column_3 =[]
compare_dict ={}
rest_3 =[]
for element in relevant_raw:
    found = False
    for item in element:
        for compare in column_3_list:
            if levenshtein(item, compare) < 5:
                #compare_dict.setdefault(item, []).append(compare)
                #compare_dict.setdefault(item, []).append(levenshtein(item,compare))
                column_3.append(item.replace(item, compare))
                rest_3.append(item)
                found = True
                break
            else: 
                rest_3.append('x')
                found = True
                break
            if found: break
print(column_3)
print(rest_3)

0 个答案:

没有答案