[英]How to find the recurrence relation, and calculate Master Theorem of a Merge Sort Code?
[英]Merge dictionary with recurrence
我有一個循環:
all_rec = {}
for i in range(0, 2):
rec = buildings[best_buildings[i]]['recommendations']
第一次迭代后 'rec' 的值:
rec = {'a': {'b': 2, 'c': 1}, 'd': {'e': 5}}
第二次迭代后'rec'的值:
rec = {'d': {'e': 4}}
'recommendations' 的數據類型是字典。 如何將此循環產生的所有“rec”字典添加到一個字典“all_rec”中?
我希望 'all_rec' 看起來像這樣:
all_rec = {'a': {'b': 2, 'c': 1}, 'd': {'e': 5}, 'd': {'e': 4}}
將 'd': {'e': 5} 和 'd': {'e': 4} 保留在新字典中。 如何在 Python 2.7 中做到這一點?
如果您需要保留所有這些值,建議下層字典中的值應該是列表,至少對於摘要列表:
all_rec = {}
for i in range(0, 2):
rec = buildings[best_buildings[i]]['recommendations']
for dk, dc in rec.items():
if dk not in all_rec:
all_rec[dk] = {k:[v] for k,v in dc.items()}
else:
for k,v in dc.items():
if k in all_rec[dk]:
all_rec[dk][k].append(v)
else:
all_rec[dk][k] = [v]
print(all_rec)
{'a': {'b': [2], 'c': [1]}, 'd': {'e': [5,4]}}
這是 Python 3.7; 我不知道您需要如何調整才能使用 2.7,但我盡可能保持基本。
我沒有你的數據,但這是一個粗略的想法:
如果您想總結建議:
from collections import defaultdict
all_rec = defaultdict(lambda: defaultdict(int))
for i in range(0, 2):
rec[buildings[best_buildings[i]]] += buildings[best_buildings[i]]['recommendations']
如果要 append 建議:
from collections import defaultdict
all_rec = defaultdict(lambda: defaultdict(list))
for i in range(0, 2):
rec[buildings[best_buildings[i]]].append(buildings[best_buildings[i]]['recommendations'])
--- 演示
>>> from collections import defaultdict
>>>
>>> demo = defaultdict(lambda: defaultdict(int))
>>> demo['a']['b'] += 1
>>> demo
defaultdict(<function <lambda> at 0x7f931a2d2700>, {'a': defaultdict(<class 'int'>, {'b': 1})})
>>> demo['a']['b'] += 1
>>> demo
defaultdict(<function <lambda> at 0x7f931a2d2700>, {'a': defaultdict(<class 'int'>, {'b': 2})})
>>>
>>> demo = defaultdict(lambda: defaultdict(list))
>>> demo['a']['b'].append(1)
>>> demo
defaultdict(<function <lambda> at 0x7f931a2d2b80>, {'a': defaultdict(<class 'list'>, {'b': [1]})})
>>> demo['a']['b'].append(1)
>>> demo
defaultdict(<function <lambda> at 0x7f931a2d2b80>, {'a': defaultdict(<class 'list'>, {'b': [1, 1]})})
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.