【发布时间】:2018-03-31 03:00:22
【问题描述】:
我有一个图表,它由具有酒店“parentid”的节点和存储在其中的“phone_search”组成。 我构建此图的主要目的是连接所有具有相似“phone_search”的“parentid”(递归),例如,如果 parentid A 具有 phone_search 1,2; B有2,3; C有3,4; D 有 5,6,E 有 6,7,那么 A、B、C 将被分到一个集群中,而 D 和 E 在另一个集群中。
这是我构建网络的代码:
from pymongo import MongoClient # To import client for MongoDB
import networkx as nx
import pickle
G = nx.Graph()
#Defining variables
hotels = []
phones = []
allResult = []
finalResult = []
#dictNx = {}
# Initializing MongoDB client
client = MongoClient()
# Connection
db = client.hotel
collection = db.hotelData
for post in collection.find():
hotels.append(post)
for hotel in hotels:
try:
phones = hotel["phone_search"].split("|")
for phone in phones:
if phone == '':
pass
else:
G.add_edge(hotel["parentid"],phone)
except:
phones = hotel["phone_search"]
if phone == '':
pass
else:
G.add_edge(hotel["parentid"],phone)
# nx.write_gml(G,"export.gml")
pickle.dump(G, open('/home/justdial/newHotel/graph.txt', 'w'))
我想要做什么:我想为每个组件分配一个组 ID 并将其存储到字典中,以便我每次都可以直接从字典中轻松访问它们。
示例:Gid 1 将包含一些在同一个集群中的 parentid 和 phone_searches。同样,Gid 2 将包含来自另一个集群的节点,依此类推......
我还有一个疑问。使用组 ID 从字典中访问节点是否比在 networkx 图上执行 bfs 更快?
【问题讨论】:
标签: python dictionary grouping networkx