50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
import json
|
|
|
|
def read_file(filename):
|
|
with open(filename, 'r') as f:
|
|
for line in f:
|
|
yield line.strip()
|
|
|
|
class json_encoder(json.JSONEncoder):
|
|
def default(self, obj):
|
|
if isinstance(obj, set):
|
|
return list(obj)
|
|
return json.JSONEncoder.default(self, obj)
|
|
|
|
def main():
|
|
graph = dict()
|
|
|
|
for line in read_file("connections.txt"):
|
|
tokens = line.split(" ")
|
|
tokens[0] = int(tokens[0])
|
|
tokens[1] = int(tokens[1])
|
|
|
|
# add vertex 1
|
|
if tokens[0] not in graph:
|
|
graph[tokens[0]] = {
|
|
'siblings': [],
|
|
'transport': set()
|
|
}
|
|
graph[tokens[0]]['siblings'].append({
|
|
'vertex': tokens[1],
|
|
'edge': tokens[2]
|
|
})
|
|
graph[tokens[0]]['transport'].add(tokens[2])
|
|
# add vertex 2
|
|
if tokens[1] not in graph:
|
|
graph[tokens[1]] = {
|
|
'siblings': [],
|
|
'transport': set()
|
|
}
|
|
graph[tokens[1]]['siblings'].append({
|
|
'vertex': tokens[0],
|
|
'edge': tokens[2]
|
|
})
|
|
graph[tokens[1]]['transport'].add(tokens[2])
|
|
|
|
print(json.dumps(graph, sort_keys=True, indent=2, cls=json_encoder))
|
|
if __name__ == "__main__":
|
|
main()
|