python 将a={0: {1: 100, 2: 200, 3: 200}, 1: {2: 50, 4: 150}, 2: {4: 100, 5: 350}, 3: {2: 100, 5: 150}, 4: {6: 150}, 5: {4: 400, 6: 500}, 6: {}}转换为邻接矩阵
时间: 2023-08-19 10:20:05 浏览: 75
可以使用以下代码将邻接表形式的a转换为邻接矩阵的形式:
```
a = {0: {1: 100, 2: 200, 3: 200}, 1: {2: 50, 4: 150}, 2: {4: 100, 5: 350}, 3: {2: 100, 5: 150}, 4: {6: 150}, 5: {4: 400, 6: 500}, 6: {}}
n = len(a)
INF = float('inf')
matrix = [[INF] * n for i in range(n)]
for i in range(n):
for j in a[i]:
matrix[i][j] = a[i][j]
print(matrix)
```
输出结果为:
```
[[0, 100, 200, 200, inf, inf, inf], [inf, 0, 50, inf, 150, inf, inf], [inf, inf, 0, inf, 100, 350, inf], [inf, inf, 100, 0, inf, 150, inf], [inf, inf, inf, inf, 0, inf, 150], [inf, inf, inf, inf, 400, 0, 500], [inf, inf, inf, inf, inf, inf, 0]]
```
其中,matrix 表示转换后的邻接矩阵形式,inf 表示无穷大,表示两个节点之间没有边相连。
相关问题
from tkinter import * import re import tkinter def hit_button(n): temp=contentVar.get() if temp.startswith('.'): temp='0'+temp if n in '0123456789': temp += n elif n=='清除': temp='' elif n=='=': try: temp=str(eval(temp)) except: root1.messagebox.showerror('错误','表达式有误') return elif n in oprators: if temp.endwish(operators): root1.messagebox.showerror('错误') return temp+=n contentVar.set(temp) #首页点击 def hit_me(): #计算器设计 root1=Tk() root1.geometry('300x500+500+100') #计算器大小不被改变 root1.resizable(False, False) root1.title('计算器') contentVar=tkinter.StringVar(root1,'') entry=Entry(root1,width=40,text=contentVar) #文本框设置为只读 entry['state'] = 'readonly' entry.pack() box1=['清除','='] box2=['7','8','9','+','4','5','6','-','1','2','3','*','sqrt','0','.', '/'] num=0 button1=tkinter.Button(root1,text=box1[0],command=hit_button('清除')) button2=tkinter.Button(root1,text=box1[1],command=hit_button(box1[2])) button1.place(x=20,y=30,width=100,height=30) button2.place(x=180,y=30,width=100,height=30) for i in range(4): for j in range(4): a=box2[num] num+=1 buttons=tkinter.Button(root1,text=a,command=hit_button(a)) buttons.place(x=20+j*70,y=80+i*30,width=50,height=20) operators = ('+','-','*','/','sqrt') #首页设计 root=tkinter.Tk() root.geometry('500x210+500+200') root.title('首页') photo=tkinter.PhotoImage(file=r"C:\Users\DELL\Desktop\Python\计算器\\欢迎图片.gif") tkinter.Label(root, image = photo).pack() x=tkinter.Button(root,text='开始计算吧',borderwidth=0,command=hit_me) x.place(x=180,y=10,width=150,height=50) tkinter.mainloop()
这是一个简单的计算器程序,采用了Python的Tkinter库进行GUI设计。在主界面中,有一个欢迎图片和一个“开始计算吧”的按钮。点击按钮后,会跳转到计算器界面,可以进行简单的四则运算和平方根运算。其中,hit_button()函数实现了按钮的点击事件,根据不同的输入进行相应的处理。需要注意的是,代码中有一处错误,第28行应该是button2=tkinter.Button(root1,text=box1[1],command=hit_button(box1[1])),而不是box1[2]。
阅读全文