#python #list #loops #dictionary
Вопрос:
У меня есть упражнение, в котором я получаю две или более разреженных матрицы, и мне нужно найти разницу между ними. Вход-это список диктов, а выход-диктант, в котором есть различия:
вход: diff_sparse_matrices([{(1, 3): 2, (2, 7): 1}, {(1, 3): 6}])
выход: {(1, 3): -4, (2, 7): 1}
def diff_sparse_matrices(lst): new_dict = {} for d in lst : for key in d.keys() :
Это все, что я смог придумать. Как я могу написать этот код?
- Я не могу использовать numpy
- Я не могу использовать набор
Мне также нужно удалить элемент, если значение ключа равно 0, поэтому
вход: diff_sparse_matrices([{(1, 3): 2, (2, 7): 1}, {(1, 3): 2}])
выход: {(2, 7): 1}
Я не знаю, почему, но если ввод
[{(1, 3): 2, (2, 7): 1}, {(1, 3): 6, (9,10): 7}, {(2,7): 0.5, (4,2): 10}]
на выходе получается
{(1, 3): -4, (2, 7): 0.5, (9, 10): -7, (4,2): -10}
Обратите внимание, что это — 7 и -10, а не 7 и 10
Ответ №1:
Вы можете попробовать это с dict.get()
:
lst_dct = [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6, (9,10): 7}, {(2,7): 0.5, (4,2): 10}] res = {} for ld in lst_dct: for k,v in ld.items(): res[k] = -v - res.get(k,0) print(res)
Выход:
{(1, 3): -4, (2, 7): 0.5, (9, 10): -7, (4, 2): -10}
Комментарии:
1. можете ли вы достичь этого без попыток и за исключением /
2. @sds отредактированная база ответов новый отредактированный вопрос