我有以下字典列表。從默認字典創建字典
new_entries = []
new_entries.append({'id':1,'a':1,'b':2})
new_entries.append({'id':2,'a':3,'b':2})
new_entries.append({'id':3,'a':4,'b':3})
new_entries.append({'id':4,'a':5,'b':6})
new_entries.append({'id':5,'a':8,'b':9})
new_entries.append({'id':6,'a':9,'b':8})
new_entries.append({'id':7,'a':1,'b':4})
new_entries.append({'id':8,'a':1,'b':2})
new_entries.append({'id':9,'a':3,'b':2})
new_entries.append({'id':10,'a':6,'b':2})
new_entries.append({'id':11,'a':6,'b':2})
new_entries.append({'id':12,'a':6,'b':2})
new_entries.append({'id':13,'a':7,'b':2})
new_entries.append({'id':14,'a':7,'b':2})
new_entries.append({'id':15,'a':7,'b':2})
而且我想要基於a和b鍵的重複id。手段id 1和id 9與他們的a,b是相同的。同樣也是10,11,12。 所以,我要一本字典出來的,其結構如下
1:set([8])
8:set([1])
10:set([11,12])
11:set([10,12])
12:set([10,11])
我寫了下面的代碼爲
dummy_store = {}
dedup_store = defaultdict(set)
for entry in new_entries:
if (entry['a'],entry['b']) in dummy_store:
dedup_store[dummy_store[(entry['a'],entry['b'])]].add(entry['id'])
continue
dummy_store[(entry['a'],entry['b'])] = entry['id']
在那之後,我能夠獲得聯想的一端,從而,我dedup_store字典有 1:集([8]) 10:集([11,12])
但在字典中的其他項,我無法得到的。 我需要
8:set([1])
11:set([10,12])
12:set([10,11])
以及。如何做到這一點?
我不希望有空集的鍵。如果沒有使用臨時字典,會真的很感激! –