我在视图层中有一个字典,我传递给我的模板。字典值(大多数)是列表,尽管一些标量也存在于字典中。列表(如果存在)初始化为无。
在模板中将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;
答案 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}