如何避免使用元组?如果不理解列表,这会是什么样子

2024-06-28 21:30:59 发布

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

我应该用Python编写程序,我只使用Python三个星期。我要解决各种问题,编写函数作为训练。对于我的一个函数,我用这条线。在

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

但是我不能用任何我不能完全理解或不能完全解释的东西。我明白这句话的要旨,但是,我不能解释清楚。所以我的导师告诉我,要使用这个,我必须学习元组的所有知识并完全理解列表理解,否则我必须用纯python编写。在

这行代码基本上是查找字典,在字典中,它应该查找等于空列表的值并删除这些键/值。在

所以,我的问题是,在纯的非列表理解python中,这一行会是什么样子? 我会尝试写它,因为我想尽我最大的努力,这不是一个网站,你可以得到免费的答案,但你们纠正我,并帮助我完成它,如果它不起作用。在

另一个问题是,字典的“value”中的空列表,如果它们是空的,那么它们将不会在循环中被处理。循环应该删除等于空值的键。那么你应该如何检查列表是否为空,如果检查在循环内部,并且循环的主体中不会有空数组?在

^{2}$

如果有更好的方法来删除值为空列表的字典值。请告诉我。在

怎么会呢

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

如果不是用发电机?在


Tags: 函数in列表forlenif字典items
3条回答

只是为了好玩:

from operator import itemgetter
theDict = dict(filter(itemgetter(1), theDict.items()))

if v表示如果v有值,如果v没有任何值,控件将不输入条件并跳过该值

In [25]: theDict={'1':'2','3':'', '4':[]}

In [26]: for k,v in theDict.items():
   ....:     if v:
   ....:         newDict[k]=v
   ....:

In [27]: newDict
Out[27]: {'1': '2'}

============================

^{pr2}$

根据你的输入更新了答案。。。在

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

看起来像(如果你想要新字典)

^{pr2}$

如果要修改现有词典:

for key, value in theDict.items():
    if not len(value) > 0:
        del theDict[key]

相关问题 更多 >