2017-02-23 196 views
1

我需要有效地將數據存儲在類似「集詞典」的東西中,例如具有與每個唯一密鑰匹配的多個(唯一)值的字典。我的數據來源將是一個(不是很好)結構化的XML。創建「集詞典」

我的想法是: 我會瀏覽一些元素並查找鍵。如果密鑰不存在,將其添加到字典中,如果它已經存在,只需在相應的密鑰中添加一個新值即可。

其結果將是這樣的:

{ 
'key1': {'1484', '1487', 1488', ...} 
'key2': {'1485', '1486', '1489', ...} 
'key3': {'1490', '1491', '1492', ...} 
... 
} 

我需要在旅途中添加新鍵。 我需要將唯一值推送到每個集合中。 我需要能夠遍歷整個字典。

我不確定這是否可行,但如果有人能把我推向正確的方向,我會感激不盡。

+3

你做了什麼,試圖解決這個問題得更快? – depperm

回答

0

我不會給這個基準,但在我的經驗本地類型的字典是

store = {} 
for k, v in yoursource: 
    try: 
     store[k].add(v) 
    except KeyError: 
     store[k] = {v} 
0
from collections import defaultdict 
mydict = defaultdict(set) 
mydict["key1"] |= {'1484', '1487', '1488'} 

迭代就像正常的字典。

+1

這是行不通的,因爲你試圖將一個集合作爲成員添加到集合中。但套是不可能的。您可能需要像'| ='這樣的東西。或者一次只添加一個數字。 –

+0

@Paul:只有字典的鍵需要可散列。 – martineau

+0

@martineau做一組元素。這裏的問題與封閉字典沒有關係,但是爲了將一個集合填充到恰好是字典中的值的集合中。 –