我有一个帮助字典,其中键是事件对和特征的嵌套元组,特征的数量可以在 1 - N 之间。与事件对相关。该值是所述事件对和特征的支持。
我有一个字典d,它是一个嵌套字典,其中将存储每个事件对的支持以及该功能的每个可能的部分重复项。
这是在以下代码片段中完成的
help_d = {(('Event 1', 'Event 2'),('Feature A', 'Feature B',...,'Feature T', 'Feature H')) : 10,
(('Event 1', 'Event 3'),('Feature C', 'Feature E',...,'Feature H', 'Feature G')) : 50,
(('Event 1', 'Event 4'),('Feature F', 'Feature G',...,'Feature T', 'Feature X')) : 100,
.....
(('Event 10', 'Event 15'),('Feature D', 'Feature E',....,'Feature V', 'Feature B')) : 5}
d = defaultdict(int,defaultdict())
for key,value in help_d.items():
event_a = key[0][0]
event_b = key[0][1]
feature_tuple = key[1]
#Every possible partial duplicate of the features
all_keys_to_update = list(itertools.product(*zip(feature_tuple, itertools.repeat(''))))
#Nested for loop that takes around 3-4 secs per iteration
for key_to_update in all_keys_to_update:
d[(event_a,event_b)][key_to_update] += value
其大小help_dict约为 12 000 个按键。
该列表的大小all_keys_to_update约为 10 000。
嵌套的 for 循环需要大约 3-4 秒的时间来循环,这意味着大约需要 11 个小时才能完成这个特定的代码片段。
我只有 3 个事件和 2 个功能的示例
help_d = {(('Event 1', 'Event 2'),('Feature A', 'Feature B')) : 10,
(('Event 1', 'Event 2'),('Feature A', 'Feature C')) : 20,
(('Event 1', 'Event 3'),('Feature D', 'Feature C')) : 50,
(('Event 2', 'Event 3'),('Feature D', 'Feature B')) : 10}
是否有更快的方法来更新嵌套字典中具有相同值的一组键?
慕的地10843