关于芬德尔()在python中返回空列表?

2024-09-26 17:57:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下定义的python方法。我尝试匹配匹配clientname参数的dictionary元素

def loadSites(self, fpath, clientname):

            keylist = [re.findall(clientname,k) for k in self.cacheDictionary.keys()]
            for items in keylist:
                print(items)

当我打印清单时,我得到了

^{pr2}$

我只希望得到两个元素。我做错什么了?在

另外,我怎样才能从字典中删除这个条目呢?在


Tags: 方法inselfre元素for参数dictionary
2条回答

如果找不到模式,^{}将返回一个空的list。你可以简单地^{}这些出来。请注意,当您迭代dict时,您会自动迭代这些键:

keylist = filter(None, (re.findall(clientname,k) for k in self.cacheDictionary))
# Python3: if you want to persist a list
# keylist = list(filter(None, (re.findall(clientname,k) for k in self.cacheDictionary)))

for items in keylist:
    print(items)

更新:

如果要从dict中删除与您的模式匹配且实际上包含字符串的所有键,有许多选项tat不需要正则表达式,例如:

^{pr2}$

或者只需在一次迭代中理解一个新的dict形式草稿:

self.cd = {k: v for k, v in self.cd.items() if clientName not in  k}

如果只需要两个元素,则只在存在匹配项时返回。在

keylist = [re.findall(clientname,k) if(re.findall(clientname,k)) else None for k in self.cacheDictionary.keys()]
        for items in keylist:
            print(items)

相关问题 更多 >

    热门问题