从列表中删除作为同一列表中其他项的子字符串的项目

时间:2018-04-17 07:59:47

标签: python list dictionary substring

Python 3:

我有一个单词列表。我想创建一个dict,其中包含列表中的唯一单词作为键,其频率作为值。另外,我想从列表中删除任何其他单词的子串。

例如:

list  =   ['goon ', 'goonk ', 'goon ', 'goonj ', 'w ', 'wo ', 'wor ', 'world ', 'world ']

字典应该是:

dict  =  {'goonj': 1, 'world': 2, 'goonk':1}

我尝试了以下方法,但我没有得到所需的词典。

方法1:如果key的子字符串列表为空,那么我将该键添加到dict。

for keyword in list:         
    if not [key for key in list if keyword in key and key != keyword]:
        if keyword in KeywordDict:
            KeywordDict[keyword] += 1
        else:
            KeywordDict[keyword] = 1

方法2:将单词添加到dict并从dict中删除它的所有子串键。

if keyword in KeywordDict:
    KeywordDict[keyword] += 1
else:
    KeywordDict[keyword] = 1
for key in KeywordDict:
    if keyword.startswith(key) > -1:
        KeywordDict.pop(key)

我尝试了上述方法的其他微小变体,但列表仍然包含子字符串。

实际列表大约有300个单词。

我也尝试使用列表理解和字典理解与同样的错误。

我做错了什么?有人可以提出另一种方法吗?

0 个答案:

没有答案