Ошибка типа: <<не поддерживается между экземплярами dict и dict: Python 3 Преобразование? - PullRequest
0 голосов
/ 02 февраля 2020

Я знаю, что работаю с кодом из python 2, который больше не работает в python 3. Однако я не уверен, как настроить свой код, и в настоящее время я не могу запустить python 2. Оцените Любое понимание.

Я уже рассмотрел эти существующие темы, но я просто не понимаю, как применить полученные знания к моему собственному сценарию использования: TypeError: '<' не поддерживается между экземплярами 'dict' и 'dict' </a>
TypeError: '>' не поддерживается между экземплярами 'dict' и 'dict'

МОЙ КОД

nodes=random.randint(47,52)
p=random.uniform(0.05,0.08)
name="Erdos-Renyi random weighted graph"
G=nx.erdos_renyi_graph(nodes,p)
maxw=random.randint(7,12)
weight=weight_attr(G,maxw)
w_edges=[(x,y,z) for (x,y),z in weight.items()]
G.add_weighted_edges_from(w_edges)
G=nx.Graph(G,name=name)
print ("Graph G is a %s with %i nodes, p=%.3f and %i edges\n" %(str(G),len(G.nodes()),p,len(G.edges())))

res = list(sorted(Counter(G.edges()), key=Counter(G.edges()).__getitem__, reverse=True))
for i in res:
    print ("Edge", i, "has weight", Counter(G.edges())[i]['weight'])

Код выдает ошибку в этой строке:

res = list(sorted(Counter(G.edges()), key=Counter(G.edges()).__getitem__, reverse=True))
TypeError: '<' not supported between instances of 'dict' and 'dict'

1 Ответ

0 голосов
/ 02 февраля 2020

Хотя я не знаю NetworkX, я не вижу необходимости что-либо сортировать или составлять список, поскольку вы просто печатаете вещи

Это должно помочь вам отладить код, по крайней мере и, вероятно, печатает что-то похожее в другом порядке

edge_counter = Counter(G.edges())

for k, v in edge_counter.items():
    print(f'edge {k} has value {v}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...