将字符串格式的键值对图转换为字典。Python
给定一个地图,用一串用逗号分隔的两位数字表示,比如 "12,23,34,45,56,67,78,81",其中每对数字代表两个数字之间的路径。我们需要把这个字符串转换成一个图,图用字典表示,字典的键是起点(数字),值是从这个起点可以到达的目的地。例如,1:[2,8],2:[3],等等。
这是我非常糟糕的尝试:
def path(way):
x = way.split(',')
y = sorted(set(tele.replace(',','')))
graph = dict()
for i in x:
for j in range(len(i)):
for h in y:
if h in i and i[j] != h:
if h in graph:
graph[h].append((i[j]))
else:
graph[h] = [(i[j])]
return graph
我打算在这之后实现广度优先搜索算法,以找到最佳路径。如果我的解释不清楚,我很抱歉。任何帮助都将非常感激,谢谢!
1 个回答
1
# this initializes values in the dictionary d with empty lists
# so that we can directly call .append() without checking "if key in keys"
from collections import defaultdict
d = defaultdict(list)
# your input string
s = "12,23,34,45,56,67,78,81"
# iterate through digit pairs
for pair in s.split(","):
# get single digits from a pair
fr = pair[0]
to = pair[1]
# add edges in both directions (undirected)
d[fr].append(to)
d[to].append(fr)
# see what we got
print d
结果
{'1': ['2', '8'], '3': ['2', '4'], '2': ['1', '3'], '5': ['4', '6'], '4': ['3', '5'], '7': ['6', '8'], '6': ['5', '7'], '8': ['7', '1']}