Я пытаюсь создать словарь, который будет выглядеть следующим образом, если n == 3
Python словарь Постижение доступа к несуществующему ключу
{
0: [1, 2],
1: [0, 2],
2: [0, 1]
}
В основном .. только ДИКТ с ключами, которые отображаются в массивы, содержащих другой ключ целые числа, за исключением той, на которую она была сопоставлена. Мой код:
import itertools
graph = {i: range(num_nodes) for i in range(num_nodes)}
for i in graph.keys():
graph[i].remove(i)
Я не знаю, почему эта ошибка бросают ValueError: list.remove(x): x not in list
После немного больше исследований, обнаружил, что я мог бы сделать вычитание между множествами и делать все это на одном дыхании:
graph = {i: list(set(range(num_nodes)) - set([i])) for i in range(num_nodes)}
Спасибо всем!
Что происходит с 'перестановками' и' num_nodes - 1'? Похоже, вы могли бы заменить это целое выражение на значения в понимании с помощью 'range (num_nodes)'. – user2357112
Возможно, вам придется разобрать ключ на int ... 'graph [i] .remove (int (i))'? –
Кажется, у вас есть список итераций 'itertools.permutations', а не список целых чисел, как вы, кажется, ожидаете. – mgilson