Я пытаюсь добавить новое значение пары ключей в словарь:
То, что мой код выводит на данный момент:
dict_items([((2, 2), 2)])
То, что я действительно хочу:
{(0, 0): 0}, {(0, 1): 2}, {(0, 2): 3}, {(1, 0): 1}, {(1, 1): 1}, {(1, 2): 2}, {(2, 0): 5}, {(2, 1): 3}, {(2, 2): 2}
Может ли кто-нибудь объяснить, как обновить словарь с новыми парами значений ключей? Я попытался использовать вызов функции обновления, но получил следующую ошибку:
TypeError: unhashable type: 'set'
Любая помощь высоко ценится!
distanceList = []
trainingset = [5, 6, 10]
testset = [5,7,8]
for i in trainingset:
for j in testset:
distance = abs(i-j)
values = dict()
values[trainingset.index(i),testset.index(j)] = distance
# values.update({{trainingset.index(i),testset.index(j)}:distace})
distanceList.append(distance)
print(distanceList)
print(values.items())
Ошибка "unhashable type: set" означает, что вы пытаетесь использовать заданный объект в качестве словарного ключа, а наборы не могут быть ключами словарей.
И хотя я не думаю, что вы намеренно пытаетесь создать набор или использовать его в качестве словарного ключа, это то, что делает эта строка:
values.update({{trainingset.index(i),testset.index(j)}:distace})
(Внутренние фигурные скобки, без внутреннего двоеточия, создадут заданный объект).
Если вы просто хотите кортеж, как показывает ваш пример, попробуйте:
values.update({(trainingset.index(i),testset.index(j)):distace})
Это должно работать, если вы сделаете еще несколько небольших изменений (например, distace
→ distance
, поднимите свое создание values
за пределами ваших циклов).