如何解决如何从嵌套字典生成方阵?
我最近正在使用networkx模块,现在我要获取国家之间的距离数据。
因此excel原始数据如下:
Nat1 Nat2 Y/N
ABW ANT 0
ABW ARG 0
ABW BEK 1
ABW BHS 1
ABW BRA 0
...
ALB COL 0
ALB CYP 1
...
感谢GeckStar(Networkx: Get the distance between nodes),我设法知道了如何将数据集编码为嵌套字典。
问题是,我对字典不熟悉。如果它是嵌套列表,我可以处理,但是嵌套字典...我需要其他人的帮助。
所以我检查了如果我编写如下代码会给我什么?
distance = dict(nx.all_pairs_shortest_path_length(graph))
df = pd.DataFrame(list(distance.items()))
df.to_excel("C_C.xlsx")
(仅供参考,
distance = dict(nx.all_pairs_shortest_path_length(graph))
将计算从一个国家到另一个国家的最短路径。因此,如果一个国家没有与另一个国家建立联系,并且需要绕道而行,那么它的价值将大于1。)
当然,进展并不顺利。
0 1
0 ABW {'ABW':0,'ANT': 1 ...,'BHS': 2 ...}
1 ANT {'ANT':0,'ABW': 1 ...}
...
3 BEL {'BEL':0,'ABW':1,... 'BHS':4,...}
...
但是我知道应该有一种方法可以将这些数据制作成像这样的方矩阵:
ABW ANT ARG BEL BHS ...
ABW 0 0 0 1 2 ...
ANT 0 0 1 0 1 ...
ARG 0 1 0 1 0 ...
BEL 2 0 1 0 4 ...
...
请问能给我启发吗? 感谢您抽出宝贵时间来检查此问题,也感谢您提前提出解决方案。
解决方法
我只是浏览了一个列表。
dis = dict(nx.all_pairs_shortest_path_length(graph))
Nations = list(dis.keys())
master = [[""]]
for x in Nations:
master[0].append(x)
for Nat1 in dis:
master.append([Nat1])
for Nat2 in Nations:
master[-1].append(dis[Nat1][Nat2])
感谢大家照顾这个问题。 祝你有美好的一天!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。