У меня было то, что я думал, было случайным рабочим обходом графа узла / грани сети.
Недавно я решил обновить Anaconda с помощью навигатора, а затем вернулся, чтобы снова запустить мою программу, и она внезапно перестала работать. Вместо этого я теперь получаю код ошибки:
runfile('C:/Users/e17/.spyder-py3/temp.py', wdir='C:/Users/e17/.spyder-py3')
Traceback (most recent call last):
File "<ipython-input-64-51811f4d02fc>", line 1, in <module>
runfile('C:/Users/e17/.spyder-py3/temp.py', wdir='C:/Users/e17/.spyder-py3')
File "C:\Users\e17\Anaconda3\lib\site-
packages\spyder\utils\site\sitecustomize.py", line 688, in runfile
execfile(filename, namespace)
File "C:\Users\e17\Anaconda3\lib\site-
packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/e17/.spyder-py3/temp.py", line 19, in <module>
if rc in NodesVisited:
TypeError: unhashable type: 'dict'
Я использовал цикл while для заполнения словаря, используя узлы, которые были посещены во время случайного обхода. Это было действительно хорошо в том, что словарь пригодился для большого количества последующего анализа. Я теперь полностью потерян в том, как это исправить. Я понял, что мне нужно предоставить ключ для словаря, но я не совсем уверен, как заполнить словарь после предоставления ключей. Во всяком случае, вот код:
import networkx as nx
import random
G_fb = nx.karate_club_graph()
counter = 0
loops = 1
mylist = [];
#run while loop for multiple attempts at random walker
while loops <= 1000:
rc = random.choice(G_fb.nodes())
NodesVisited = {}
#Execute random walk
while counter <= 11:
if rc in NodesVisited:
NodesVisited[rc] += 1
else:
NodesVisited[rc] = 1
Neighbors = G_fb.neighbors(rc)
rc = random.choice(Neighbors)
counter += 1
#Organize the node list in most visited with decreasing order
MostVisited = sorted(NodesVisited, key = NodesVisited.get,reverse = True)
#Separate the top 10 most visited vertex
top_top = MostVisited[:10]
#create a list of most visited sites for plotting for each iteration
mylist.append(top_top)
loops = loops + 1
counter = 0
print ('all done!')
Любая помощь очень ценится!