Python 2.7.9字典查找和删除

时间:2015-03-08 18:12:03

标签: python list dictionary

Python 2.7.9字典问题: 我在Python中有一个包含先前已附加的列表的字典,并且这些列表被映射,例如, 1 => 10.2,2 => 10.33 如何在字典中找到单个值并将其删除? 例如。找到' =&2;并删除' a'和相应的' b'值:

myDictBefore = {'a': [1, 2, 3], 'b': [10.2, 10.33, 10.05]}

myDictAfter = {'a': [1, 3], 'b': [10.2, 10.05]}

我怀疑我应该找到一个'值然后得到索引 删除myDict [' a'] [index]

和myDict [' b'] [索引] - 虽然我不确定如何做到这一点。

2 个答案:

答案 0 :(得分:2)

怎么样:

idx = myDictBefore['a'].index(2)
myDictBefore['a'].pop(idx)
myDictBefore['b'].pop(idx)

如果这种情况经常发生,你可以为它编写一般函数:

def removeRow(dct, col, val):
    '''remove a "row" from a table-like dictionary containing lists,
       where the value of that row in a given column is equal to some
       value'''
    idx = dct[col].index(val)
    for key in dct:
        dct[key].pop(idx)

你可以这样使用:

removeRow(myDictBefore, 'a', 2)

答案 1 :(得分:0)

您可以定义一个执行此操作的函数。

def remove(d, x):
    index = d['a'].index(x)  # will raise ValueError if x is not in 'a' list
    del d['a'][index]
    del d['b'][index]

myDict = {'a': [1, 2, 3], 'b': [10.2, 10.33, 10.05]}

remove(myDict, 2)
print(myDict)  # --> {'a': [1, 3], 'b': [10.2, 10.05]}