对于我正在解决的问题,我有一个字典列表。问题涉及表单的多个查询merge(a, b, c)。合并意味着,在结果中,公共键的计数被添加/减去,并且不常见的键(及其值)按原样附加。
我目前正在使用 Pythoncollection.Counter来表示字典并执行如下合并:
def merge(a, b, c):
counter_a, counter_b, counter_c = DICTLIST[a],DICTLIST[b],DICTLIST[c]
total = counter_a + counter_b - counter_c # Type collections.Counter
return total
虽然这是一个方便的解决方案,但在问题中,最多可以有 10**5 个这样的查询。在这样的规模上,使用这种方法太慢了。有没有更好的方法来解决这个问题?
注意:合并查询的预计算是不切实际的,因为可能的输入数量非常大。
例子:
DICTLIST[a] = Counter({1:5,2:10})
DICTLIST[b] = Counter({2:10,3:20})
DICTLIST[c] = Counter({1:2})
merge(a,b,c) # Expected Output: {1:3, 2:20, 3:20}
一只名叫tom的猫
POPMUISE
MM们
相关分类