gpt4 book ai didi

python - 重构:合并两个字典,但忽略 None 值

转载 作者:行者123 更新时间:2023-12-01 08:52:53 28 4
gpt4 key购买 nike

我需要一些 Python 重构建议。

我有一个 dict 对象列表 (new_monitors),它可以为空。然而,当有新的监视器时,我想向这些监视器添加一堆字段。

对于每个监视器,我想附加 DogDump.HIDE_FIELDS 字典中的所有 not None 字段:

if new_monitors:
for monitor in new_monitors:
for key, value in DogDump.HIDE_FIELDS.items():
if value:
monitor[key] = value

注意:下面的代码片段效果很好,但它包含了所有 None 字段。我不需要 None 字段!

if new_monitors:
for monitor in new_monitors:
monitor.update(DogDump.HIDE_FIELDS)

如何重构这个看起来更像 Pythonic 的代码片段,但仍保持良好的可读性?

最佳答案

在将相关键/值对添加到 monitor 字典之前,不确定哪种方式才是真正处理过滤 DogDump.HIDE_FIELDS 字典的最“Pythonic”方式。一种方法是使用字典理解来执行“过滤”。

此外,我认为您可以在循环之前“过滤”您的 DogDump.HIDE_FIELDS 字典,而不是为每个循环迭代重复此操作(除非发生其他操作会改变 DogDump.HIDE_FIELDS 当你迭代时)。

使用字典理解进行“过滤”的示例(dump 指的是您的 DogDump.HIDE_FIELDS 字典):

monitor = {'key': 'value'}
dump = {'a': 1, 'b': None}

dump_filtered = {k:v for (k,v) in dump.items() if v}
monitor.update(dump_filtered)
print(monitor)
# OUTPUT
# {'key': 'value', 'a': 1}

关于python - 重构:合并两个字典,但忽略 None 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52993113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com