-3
如何访问字典变异:如何从同一个字段删除元素时有效循环字典
我有两个字典完全相同的副本。基于少数条件,我需要在循环中删除少量元素。删除发生,但字典迭代每个元素,我明白了为什么,但我想知道是否有任何可以做的事情来避免被删除的键的额外循环。
例如
a={0:{1,2,3}, 1:{2,3,4}, 2:{6,7,8}, 3:{3,4,5}, 4:{7,8,9}}
b={0:{1,2,3}, 1:{2,3,4}, 2:{6,7,8}, 3:{3,4,5}, 4:{7,8,9}}
for key, values in a.items():
print key , a
for key2, values2 in b.items():
if key==0 and key2==3:
del a[3]
if key==1 and key2==2:
del a[2]
当计算上述代码的输出I得到以下:
0 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 2: set([8, 6, 7]), 3: set([3, 4, 5]), 4: set([8, 9, 7])}
1 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 2: set([8, 6, 7]), 4: set([8, 9, 7])}
2 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 4: set([8, 9, 7])}
3 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 4: set([8, 9, 7])}
4 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 4: set([8, 9, 7])}
迭代对所有的行完成甚至为2和3,其余删除之际循环。
我想输出是有点类似
0 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 2: set([8, 6, 7]), 3: set([3, 4, 5]), 4: set([8, 9, 7])}
1 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 2: set([8, 6, 7]), 4: set([8, 9, 7])}
4 {0: set([1, 2, 3]), 1: set([2, 3, 4]), 4: set([8, 9, 7])}
使用字典它我该怎么办,我想用字典,因为字典中删除的平均情况复杂度为O(1),其中在同一列表是o(n)...
由于我的数据集太大,我需要一个优化的方式来做到这一点。
在此先感谢
对于一个简单的开始,你的'if'语句是排他的,一个或都不正确,而不是两个,因此使用'elif'第二'if'。不会有太大的区别,但每一点都有帮助。 – cdarke
您能否以简单的英语解释*您用这种算法试图完成什么?你有两组键/值对,你想要做什么? –
你为什么连环?如果a.get(0,False)和b.get(3,False):del a [3]'会做同样的事情,没有循环。 – IanAuld