ClearWhiteSpace,需要检查值是否等于[]

时间:2012-06-14 00:03:14

标签: python

  

可能重复:
  How do you check if list is blank?

def CleanWhiteSpace(theDict) :
    stuff=[]

    for key,value in theDict.items():
        for d in value:
            if value != " ":
                stuff.append(d)    
                print d
                theDict[key]=stuff
            if not value[d]:
                print value
        stuff=[]
    return theDict
print CleanWhiteSpace({'a':['1','2'],'b':['3',' '],'c':[]})

你如何检查c是否为空白c是否等于[]?

好吧我有一个里面有LISTS的DICTIONARY,其中一些列表由NOTHING组成。我需要遍历字典并删除那些具有AN EMPTY LIST值的密钥。

尽量保持清醒。我试过了什么?我尝试了多种不同的方法来检查密钥的值是否等于零。我尝试了值==“”:语句,我尝试了,len函数来检查值是否为空,我尝试了如果值:似乎什么都没有用,为什么?因为当有人回答时,空列表不会在循环体中执行

3 个答案:

答案 0 :(得分:1)

在您的示例中,当正在处理关键c时,key的值将为'c',而value的值将为[],空列表。你可以通过说if not value:来测试。或者,如果您知道它是一个列表而不是其他类型的序列,if value==[]

很难确定所写的问题,但你是否尝试在循环中的某处放置if d==[]:之类的东西?这不起作用,因为当value是一个空列表时,循环for d in value:循环遍历空列表的元素,并且没有任何,所以循环体永远不会被执行。

顺便说一下,代码的其他一些部分似乎在value及其元素之间显示出混淆。例如,您编写if value != " ",但肯定是d,您希望在那里进行测试。和if not value[d]:有什么关系?为什么你希望d成为一个合适的东西来索引value

您还应该仔细考虑代码执行时stuff会发生什么。

答案 1 :(得分:1)

编辑:

这个怎么样?

def CleanWhiteSpace(theDict):
    newDict = {}
    for key in theDict:
        if theDict[key]:
            newDict[key] = theDict[key]
    return newDict

请注意,这样可以避免修改theDict,因此如果您需要,请询问。

有两种方法可以检查列表是否为空:

a_list = []
if not a_list:
    do something #the if is entered if the list is blank

或者

a_list = []
if len(a_list)==0:
    do something

这两个片段是等效的。请注意,第一个有效,因为a_list的值隐式转换为布尔值,bool([])False

答案 2 :(得分:0)

theDict = dict( [(k,v) for k,v in theDict.items() if len(v)>0])