在字典中积累值的社区首选Python设计模式是什么?

2024-04-26 21:26:37 发布

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

我经常发现自己写这种模式是为了在字典中积累一件事的计数。 在本例中,我正在收集数据中心应用程序的主机硬件信息,模式与我经常使用的模式相同

今天,我想知道是否有更好的方法(更具Pythonic)来构建这个模式

我确实环顾了S.O.最常见的结果是在列表上使用append来添加不存在的内容,但这并没有解决如何在字典中进行累加器的问题,因为传入的键/值可能已经存在于字典中,也可能不存在于字典中

hardware_types = []
for host in hosts:
    hardware_type = hosts[host]['hardware_type']
    if hardware_type in hardware_types:
        hardware_types[hardware_type] += 1
    else:
        hardware_types[hardware_type] = 1

谢谢, 鲍勃


Tags: 方法in信息应用程序host字典硬件type
1条回答
网友
1楼 · 发布于 2024-04-26 21:26:37

对于这种情况,我经常使用defaultdict。在声明中,您指定默认值是什么,当您第一次引用它时将生成该值。在这种情况下,您需要0,并且可以使用int类型作为构造函数:

from collections import defaultdict

hardware_types = defaultdict(int)
for host in hosts:
    hardware_type = hosts[host]['hardware_type'])
    hardware_types[hardware_type] += 1

它可以嵌套,包括通过lambdas的字典等。 通过避免检查密钥是否存在,它有助于使代码更轻松,但是要小心假设,因为如果密钥应该存在,但不是由于错误,它将被创建,并且不会引发异常

相关问题 更多 >