In [1]: s = """ 1. 364 Lane Debs
...: 2. 364 Debs Lane
...: 3. 365 Lane Debs
...: 4. 364 debs lane"""
In [8]: lines = s.splitlines()
In [9]: {frozenset(line.lower().split()[1:]):ind for ind, line in enumerate(lines)}
Out[7]: {frozenset({'364', 'debs', 'lane'}): 3,
frozenset({'365', 'debs', 'lane'}): 2}
或者,您可以保存行而不是索引:
In [10]: {frozenset(line.lower().split()[1:]):line for ind, line in enumerate(lines)}
Out[10]:
{frozenset({'364', 'debs', 'lane'}): ' 4. 364 debs lane',
frozenset({'365', 'debs', 'lane'}): ' 3. 365 Lane Debs'}
对于这个问题,Regex不是一个非常可伸缩和优化的方法。相反,您可以使用
frozenset
版本的拆分单词作为字典的键,以保存行,而不考虑它们的单词顺序,并使用str.lower()
忽略区分大小写。另外为了保持跟踪,如果实际行可以保留索引或者,您可以保存行而不是索引:
这会产生(在我的机器上):
你的下一个问题是决定哪一个重复条目是正确的
相关问题 更多 >
编程相关推荐