我有两个字符串列表如下:
good_tags = ['c#', '.net', 'java']
all_tags = [['c# .net datetime'],
['c# datetime time datediff relative-time-span'],
['html browser timezone user-agent timezone-offset']]例如,我的目标是只保留‘all_tag’中字符串列表中的'good_tags‘,
我尝试使用“in”而不是“not in”,基于Remove all the elements that occur in one list from another
y3 = [x for x in all_tags if x in good_tags]
print ('y3: ', y3)
y4 = [x for x in good_tags if x in all_tags]
print ('y4: ', y4)退出:
y3: []
y4: []发布于 2020-09-24 09:44:37
您的all_tags是一个列表,其中包含三个列表,其中每个列表包含一个字符串。因此,您首先需要做的是将每个子列表转换为一个包含字符串的列表,而不仅仅是一个字符串。
由于只有空格,用于分隔标记而没有逗号,所以必须使用以下方法将列表从['c# .net datetime']转换为['c#', '.net', 'datetime']:
[x for segments in all_tags[0] for x in segments.split()]然后您可以对整个列表执行此操作,因此遍历它的长度:
[[x for segments in all_tags[entry] for x in segments.split()] for entry in range(len(all_tags))]返回:
[['c#', '.net', 'datetime'],
['c#', 'datetime', 'time', 'datediff', 'relative-time-span'],
['html', 'browser', 'timezone', 'user-agent', 'timezone-offset']]现在你可以根据你的好标签过滤这个列表了:
y3 = [[x for x in [words for segments in all_tags[entry] for words in segments.split()] if x in good_tags] for entry in range(len(all_tags))]输出:
[['c#', '.net'], ['c#'], []]https://stackoverflow.com/questions/64043458
复制相似问题