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函数来检查值是否为空,我尝试了如果值:似乎什么都没有用,为什么?因为当有人回答时,空列表不会在循环体中执行答案 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])