关于Python:clearwhitespace需要检查,如果两个值是相等的.

ClearWhiteSpace, Need to check if the value is equal to []

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How do you check if list is blank?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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是简单等于[]?

好吧,我有一本字典,里面有目录,有些目录什么都不是。我需要遍历字典并删除那些具有空列表值的键。

尽可能清楚。我试过什么?我尝试了多种不同的方法来检查键的值是否等于零。我尝试了value==":语句,我尝试了,len函数来检查该值是否为空,如果value:似乎什么都不起作用,为什么?因为当有人回答时,空列表不会在循环体中执行。


编辑:

这个怎么样?

1
2
3
4
5
6
def CleanWhiteSpace(theDict):
    newDict = {}
    for key in theDict:
        if theDict[key]:
            newDict[key] = theDict[key]
    return newDict

请注意,这样可以避免在适当的位置修改theDict,因此如果您需要,只需询问。

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

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

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

这两个片段是等效的。注意,第一个函数的作用是因为a_list的值被隐式转换为布尔值,bool([])的值是False。< /打击>


在您的示例中,当处理键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
theDict = dict( [(k,v) for k,v in theDict.items() if len(v)>0])