2017-02-23 153 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做一组元素。这里的问题与封闭字典没有关系,但是为了将一个集合填充到恰好是字典中的值的集合中。 –