有没有更Pythonic的方法来进行这个字典迭代?

发布于 2024-09-30 03:25:14 字数 453 浏览 5 评论 0原文

我在视图层中有一本字典,我将其传递给我的模板。字典值(大部分)是列表,尽管字典中也存在一些标量。如果存在列表,则将其初始化为 None。

None 值在模板中被打印为“None”,因此我编写了这个小函数来在将列表字典传递给模板之前清除 None。由于我是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;

I have a dictionary in the view layer, that I am passing to my templates. The dictionary values are (mostly) lists, although a few scalars also reside in the dictionary. The lists if present are initialized to None.

The None values are being printed as 'None' in the template, so I wrote this little function to clean out the Nones before passing the dictionary of lists to the template. Since I am new to Python, I am wondering if there could be a more pythonic way of doing this?

# 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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

楠木可依 2024-10-07 03:25:14

您看过集合中的 defaultdict 吗?您将有一个形成的字典,

defaultdict(list)

当查询某个键并且该键不存在时,它会初始化一个空列表。

Have you looked at defaultdict within collections? You'd have a dictionary formed via

defaultdict(list)

which initializes an empty list when a key is queried and that key does not exist.

分分钟 2024-10-07 03:25:14
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}
filtered_dict = dict((k, v) for k, v in table.items() if v is not None)

or in Python 2.7+, use the dictionary comprehension syntax:

filtered_dict = {k: v for k, v in table.items() if v is not None}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文