【发布时间】:2018-01-25 22:09:20
【问题描述】:
我有一个在 Python 中接收嵌套字典的进程:
示例嵌套字典架构(伪代码)
key1: value1,
key2: dict(
key3: value2,
key4: value3,
),
key5: list(value4,value5) # any value is fine, just not empty or null
示例嵌套字典数据(伪代码)
key1: 'value',
key2: dict(
key3: '',
key4: 12345,
),
key5: list()
我想遍历/扫描这个字典并检查每个键是否有一个值(不是 Null 或空白 - false/0 是可以的)。我将需要扫描一堆相同的字典以获得该组字典的整体“填充率”。该流程每次运行时都会看到不同格式的dicts集,因此它需要自动生成填充率报告:
上面单个嵌套示例的示例填充率(理想情况下是平面字典):
key1: 1
key2: 1
key2-key3: 0
key2-key4: 1
key5: 0
如果我们扫描十个相同结构的字典,例如,我们可能会看到这样的 :fill rate":
key1: 5
key2: 6
key2-key3: 6
key2-key4: 4
key5: 3
问题
扫描不同结构的字典以生成填充率的最 Pythonic 方法是什么?如果我必须这样做数百万次,有没有更有效的方法?
创建平面 dict 来存储计数的最 Pythonic 方式是什么?如何更新它?
【问题讨论】:
-
澄清一下:“填充率”是指您希望在最终看到的所有字典中查看多少次,例如指定了
key1?你的例子不清楚。 -
我更新了这个问题,希望能更清楚。 Gen 的意思是:检查每个字段,如果它已设置并且不是 Null 或空白,则将其计为“已填充”。通过填充率,我的意思是在一组具有相同结构的字典中,每个键值对不为空或为空的频率。