目前,我有一个列表:
[['Мама мыть', 10, 'рама'],
['Мама мыть', 10, 'рама', 5, 'долго'],
['Мама мыть', 10, 'рама', 3, 'вчера'],
['Мама мыть', 10, 'рама', 3, 'вчера', 1, 'поздно']]
我需要以某种方式将其转换为Networkx边缘,其中成对的单词应成为图形的节点,而其中的整数则变为权重:
G = nx.Graph()
G.add_edge('Мама мыть', 'рама', weight=10)
G.add_edge('рама', 'долго', weight=5)
G.add_edge('рама', 'вчера', weight=3)
G.add_edge('вчера', 'поздно', weight=1)
目前,我陷入困境,没有任何想法。任何帮助,将不胜感激!
由于您有重复的信息,因此建议您首先创建一个字典以确保唯一性。我添加了一项检查,以确保重复元素的距离没有冲突。
In [1]:
distances = {}
for row in l:
for i in range(0, len(row)-1, 2):
key_tuple = (row[i], row[i+2])
d = row[i+1]
if key_tuple in distances.keys():
if distances[key_tuple] != d:
print("Warning: Found a conflicting distance for {}: {} and "
"{}. Using last".format(key_tuple, distances[key_tuple], d))
distances[key_tuple] = d
In [2]: distances
Out[2]:
{('Мама мыть', 'рама'): 10,
('рама', 'долго'): 5,
('рама', 'вчера'): 3,
('вчера', 'поздно'): 1}
然后,您可以使用该字典创建边缘。
In [3]:
import networkx as nx
G = nx.Graph()
for k, v in distances.items():
G.add_edge(k[0], k[1], weight=v)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句