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'] [索引] - 虽然我不确定如何做到这一点。
答案 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]}