字典删除超出索引的值

时间:2015-12-03 19:18:17

标签: python list dictionary

我有一本字典

 k = {'a':[7,2,3],'b':[7,2,7], 'c': [8,9,10]}

其中每个val都是一个列表。我想删除val中的第i个术语(取决于条件)而不超出范围。这是它的代码

for i in range(len(k['a'])):
    if k['a'][i] == k['b'][i]:
        pass
    else:
        for key in k:
            del [k[key][i]]

这将返回一个等同于此

的字典
{'a':[7,2],'b':[7,2], 'c': [8,9]}

但是如果字典是这个

k = {'a':[6,2,3],'b':[7,2,7], 'c': [8,9,10]}

我会得到这个错误

list index out of range 

我如何删除键值以便我不会收到此错误?

1 个答案:

答案 0 :(得分:0)

问题是当您从每个数组中删除一个项目时,这些数组的大小会减一。因此,主循环变成一次迭代太长了。

问题的说明:

>>> a = [1, 2, 3]
>>> i = 2
>>> a[i]
3
>>> len(a)
3
>>> del [a[1]]
>>> a
[1, 3]
>>> len(a)
2
>>> a[i] # used to work
IndexError: list index out of range

为了使索引和循环持续时间能够解决,你需要做这样的事情:

i = 0
while i < len(k['a']):
     if k['a'][i] == k['b'][i]:
         i += 1
     else:
         for key in k:
             del [k[key][i]]