我试图根据类似的子字符串对值列表进行排序。我想把它分组在一个dict of list中,一个键是类似的子字符串,值是这些分组值的列表。你知道吗
例如(实际列表有24k个条目):
test_list = [ 'Doghouse Amsterdam', 'Doghouse Antwerp', 'Doghouse Vienna',
'House by KatSkill', 'Garden by KatSkill', 'Meadow by KatSkill']
收件人:
resultdict = {
'Doghouse' : ['Doghouse Amsterdam', 'Doghouse Antwerp', 'Doghouse Vienna'],
'by KatSkill' : [ 'House by KatSkill', 'Garden by KatSkill', 'Meadow by KatSkill' ]
}
我试过以下方法,但一点用都没有。你知道吗
from itertools import groupby
test_list = [ 'Doghouse Amsterdam', 'Doghouse Antwerp', 'Doghouse Vienna',
'House by KatSkill', 'Garden by KatSkill', 'Meadow by KatSkill']
res = [list(i) for j, i in groupby(test_list,
lambda a: a.partition('_')[0])]
下面是一个可能更简单/更快的实现
输出
首先,查找在输入列表的另一个字符串中出现的所有以“”分隔的子字符串。在此过程中,构建一个字典,其中包含所有相应的子字符串作为键,输入字符串作为值。这将返回一个只包含单个子字符串作为键的字典。使用该示例返回:
为了获得预期的结果,需要压实。对于压缩,利用每个字典键也是字典字符串列表的一部分这一事实是有益的。因此,遍历字典值并再次将字符串拆分为子字符串。然后按子字符串列表的顺序遍历子字符串,并确定包含字典键的子字符串列表范围。将相应的范围添加到新的dict中。对于24k个条目,这可能需要一段时间。请参见下面的源代码:
使用听写和列表理解:
或者设置你的dict,并使用列表理解循环
相关问题 更多 >
编程相关推荐