在列表中查找最可能的元素

2024-09-26 17:39:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个可能值的列表。有些是正确的,有些是不正确的。但它们之间的距离相对较近

['POYS499', 'PDY9499', 'POY9499', 'PDYS499', 'PDYS499', 'PDY949']

正确的值应为PDY9499。有没有办法做到这一点。已经创建了一个算法来执行此操作

我知道如何手动操作。我将匹配每个字符并获得频率,然后创建一个从最高匹配到最低匹配的列表。当然,您需要确保最大字符数保持不变

有没有更简单的方法

--编辑 也许我解释得不对。我想要一个“函数”,它返回元素列表项中具有最高重复字符的列表

所以它检查第一个字符。如果它有5个p,那么p是第一个字符。 然后检查第二个字符。3个D和2个O。所以我们走了这么远

['PD', 'PO']

然后检查第三个字符。等等


Tags: 方法函数算法编辑距离列表手动字符
1条回答
网友
1楼 · 发布于 2024-09-26 17:39:24

使用collections模块中的计数器怎么样?我在下面举了一个例子:

from collections import Counter
Counter(['POYS499', 'PDY9499', 'POY9499', 'PDYS499', 'PDYS499', 'PDY949'])

输出:

Counter({'POYS499': 1, 'PDY9499': 1, 'POY9499': 1, 'PDYS499': 2, 'PDY949': 1})

编辑:对列表进行排序的另一个解决方案是:

from collections import Counter
counter_output = Counter(['POYS499', 'PDY9499', 'POY9499', 'PDYS499', 'PDYS499', 'PDY949'])
sorted(counter_output.items(), key =lambda x: x[1], reverse = True)

输出:

[('PDYS499', 2), ('POYS499', 1), ('PDY9499', 1), ('POY9499', 1), ('PDY949', 1)]

相关问题 更多 >

    热门问题