我的想法是有一个由4个子串组成的字符串'four'。我正在尝试从列表“folder”中查找只与4个子字符串(子集)匹配的单词。所以'paul'会匹配,但'pauls'不会匹配。我唯一的问题是'set'不能处理相同的字符串。下面的代码将打印“aa”,但字符串“four”中只有一个a。是否有“issubset”操作可用于列表?你知道吗
four = "laup"
four = set(four)
folder = ["paul","joshua","other","asdf","joshua","aa","hello"]
for word in folder:
wordstrings = set(word)
if wordstrings.issubset(four):
print(word)
据我所知,列表没有像子集那样的函数。集合总是去除重复项,因为不需要知道值是否重复就可以知道它存在于集合中。这里的问题是,当您在for循环中迭代时,word='aa'变成wordstrings={'a'},这是四的子集。你必须使用set吗?我只要一个计数器,不把单词转换成集合。你知道吗
如果要匹配相同的字符(包括重复字符),请使用Counter dict来计算每个单词中的字符数:
如果你在A-B之后得到一个空的计数器,这意味着A中的所有字母在A中出现的次数至少与在B中出现的次数相同:
您还可以使用
all
确保至少有四个应用程序中出现wordstrings中的字符,如果其中一个没有出现,则会短路:因为所有元素都是唯一的,所以重复的字符将被计为1。你知道吗
相关问题 更多 >
编程相关推荐