是否有更多pythonic方式来执行此字典迭代?

时间:2010-11-03 15:07:29

标签: python django-templates django-views

我在视图层中有一个字典,我传递给我的模板。字典值(大多数)是列表,尽管一些标量也存在于字典中。列表(如果存在)初始化为无。

在模板中将None值打印为“None”,因此在将列表字典传递给模板之前,我编写了这个小函数来清除Nones。由于我是Python的新手,我想知道是否有更多的pythonic方法可以做到这一点?

# Clean the table up and turn Nones into ''

for k, v in table.items():
#debug_str = 'key: %s, value: %s' % (k,v)
#logging.debug(debug_str)

try:
    for i, val in enumerate(v):
        if val == None: v[i] = ''

except TypeError:
    continue;

2 个答案:

答案 0 :(得分:3)

你看过集合中的defaultdict了吗?你有一个通过

形成的字典
defaultdict(list)

在查询密钥并且该密钥不存在时初始化空列表。

答案 1 :(得分:0)

filtered_dict = dict((k, v) for k, v in table.items() if v is not None)

或在Python 2.7+中,使用字典理解语法:

filtered_dict = {k: v for k, v in table.items() if v is not None}