【发布时间】:2017-10-06 15:44:53
【问题描述】:
我有一本词典词典
#Initialize the dictionary
myDict=dict()
for f in ncp:
myDict[f]={}
for t in ncp:
myDict[f][t] = {}
现在我将一个值添加到最低级别(恰好是字典键和 None 值),就像这样,但是我当前的方法很慢
for s in subsetList:
stIndex = 0
for f in list(allNodes.intersection(set(s)))
for t in list(allNodes.difference(set( allNodes.intersection(s)))):
myDict[f][t]['st_'+str(stIndex)]=None
stIndex+=1
我尝试使用理解原则来做到这一点,但我失败了,因为我找到的用于理解的示例是创建字典,而不是遍历已经存在的字典来添加。我这样做的尝试甚至不会“编译”:
myDict[f][t]['st_'+str(stIndex)]
for f in list(allNodes.intersection(set(s)))
for t in list(allNodes.difference(set( allNodes.intersection(s)))) = None
【问题讨论】:
-
您能更详细地描述您要解决的一般问题吗?理解创建对象,所以不,它们不是向现有对象添加内容的好方法。
-
您能描述一下“它太慢”是什么意思以及您期望/想要什么吗?
-
请edit您的问题,至少描述您拥有的代码是什么/如何,并且太慢了。还有什么是
subsetlist和allNones?我们不介意读者。 -
字典的创建需要不到一秒钟的时间,但迭代构建字典中的内容需要一分钟。我会在今天晚些时候尝试为这个问题添加更多细节。谢谢大家
-
allNodes.intersection(set(s))与allNodes.intersection(s)不同吗?无论如何,您调用后者的次数可能比必要的多得多,因为它的值不会改变内部for循环的每次迭代。在将其作为参数传递给allNodes.difference(set( allNodes.intersection(s)))表达式之前,是否有必要将其结果转换为set?
标签: python python-3.x dictionary