list1 = [' fire',' cats',' mats',' wats',' mire' ,'轮胎']
我想根据每个单词的最后3个字母将这些单词分开,并将其保存到字典中。
这可能吗?
答案 0 :(得分:2)
使用defaultdict
作为默认项创建list
,并使用字符串切片附加项目,计算密钥,如下所示:
import collections
list1 = ['fire', 'cats', 'mats', 'wats', 'mire', 'tire']
d=collections.defaultdict(list)
for i in list1:
d[i[-3:]].append(i)
print(dict(d)) # copy in a dict just for clean display (no defaultdict prefix)
结果:
{'ire': ['fire', 'mire', 'tire'], 'ats': ['cats', 'mats', 'wats']}
也可以使用单行,但不是那么高效,因为内部厕所测试所有列表(单行是时髦的,但有时不是最好的解决方案):
d = {k:[v for v in list1 if v.endswith(k)] for k in set(x[-3:] for x in list1)}
结果:
{'ire': ['fire', 'mire', 'tire'], 'ats': ['cats', 'mats', 'wats']}
如果你想过滤掉没有足够关联词的项目,你可以这样做(在第一遍中计算d
之后):
d = {k:v for k,v in d.items() if len(v)>2}
如果有超过2个元素,则创建一个只包含键/值的新词典。