簡體   English   中英

使用字典創建鄰接矩陣,並將字典中的字母值轉換為數字

[英]Create an adjacency matrix using a dictionary with letter values converted to numbers in python

因此,我有一本包含字母值和鍵的字典,我想使用數字(0或1)生成一個鄰接矩陣。 但是我不知道該怎么做。

這是我的字典:

g = { "a" : ["c","e","b"],
      "b" : ["f","a"]}

我想要這樣的輸出:

import numpy as np

new_dic = {'a':[0,1,1,0,1,0],'b':(1,0,0,0,0,1)}
rows_names = ['a','b'] # I use a list because dictionaries don't memorize the positions

adj_matrix = np.array([new_dic[i] for i in rows_names])

print(adj_matrix)

輸出:

[[0 1 1 0 1 0]
[1 0 0 0 0 1]]

所以這是一個鄰接矩陣:列/行1代表A,列/行2代表B ...

謝謝 !

我不知道是否有幫助,但這是我如何使用ascii將所有字母轉換為數字的方法:

for key, value in g.items():
    nums = [str(ord(x) - 96) for x in value if x.lower() >= 'a' and x.lower() <= 'z']
    g[key] = nums
print(g)

輸出:

{'a': ['3', '5', '2'], 'b': ['6', '1']}

所以a == 1 b == 2 ...

所以我的問題是:如果a的鍵a為第一個值“ e”,那么我該如何做才能在第5列第1行而不是第2列1中找到e? 並將e替換為1

使用理解:

g = {'a': ['c', 'e', 'b'], 'b': ['f', 'a']}
vals = 'a b c d e f'.split()  # Column values

new_dic = {k: [1 if x in v else 0 for x in vals] for k, v in g.items()}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM