import networkx as nx
import pylab as plt
webg = nx.read_edgelist('web-graph.txt',create_using=nx.DiGraph(),nodetype=int)
in_degrees = webg.in_degree()
in_values = sorted(set(in_degrees.values()))
in_hist = [in_degrees.values().count(x)for x in in_values]
次数分布のWebグラフをプロットしたいのですが、dictを変更して解決するにはどうすればよいですか?
Python3では、dict.values()
はリストではなく「ビュー」を返します。
- dictメソッドdict.keys()、dict.items()およびdict.values()は、リストではなく「ビュー」を返します。 https://docs.python.org/3/whatsnew/3.0.html
「ビュー」をリストに変換するには、in_degrees.values()
をlist()
でラップするだけです。
in_hist = [list(in_degrees.values()).count(x) for x in in_values]
エラーは明らかですdict_values
オブジェクトには属性count
がありません。一意の値の数をカウントする場合、最善の方法はcollections.Counter
を使用することです
from collections import Counter
in_hist = Counter(in_degrees.values())