Python-通过自动化过程添加字典

Python-通过自动化过程添加字典,python,dictionary,Python,Dictionary,我正在编写一个渗透程序,通过该程序,我检查两个坐标,如果它们在给定半径内,我将它们添加到字典(字典中的列表,如果有帮助的话)以显示它们是连接的,通过如下方式: def connected(x1,y1,x2,y2,radiusvalue): radius = ((x1-x2)**2 + (y1-y2)**2)**.5 if radius <= radiusvalue: # Search pre-existing dictionaries

我正在编写一个渗透程序,通过该程序,我检查两个坐标,如果它们在给定半径内,我将它们添加到字典(字典中的列表,如果有帮助的话)以显示它们是连接的,通过如下方式:

def connected(x1,y1,x2,y2,radiusvalue):
    radius = ((x1-x2)**2 + (y1-y2)**2)**.5
    if radius <= radiusvalue:
                # Search pre-existing dictionaries
                # Create new dictionary and add (x1, y1) & (x2, y2)
                #   or add to pre existing dictionary containing either (x1, y1) 
                #   or (x2, y2)
    else:
        return False
def已连接(x1、y1、x2、y2、半径值):
半径=((x1-x2)**2+(y1-y2)**2)**5

如果radius这是一个开始,但您没有确切说明该算法的用途,因此这可能不是最有效的方法

def add(pointdict,x1,y1,x2,y2):
    # If (x1,y1) isn't present yet, create an empty list of points
    if (x1,y1) not in pointdict:
        pointdict[(x1,y1)] = []
    # Add (x2,y2) to the list of points connected to (x1,y1)
    pointdict[(x1,y1)].append((x2,y2))

def connected(x1,y1,x2,y2,radiusvalue,pointdict):
    radius = ((x1-x2)**2 + (y1-y2)**2)**.5
    if radius <= radiusvalue:
        # Connect (x1,y1) to (x2,y2)
        add(pointdict,x1,y1,x2,y2)
        # Connect (x2,y2) to (x1,y1)
        add(pointdict,x2,y2,x1,y1)
        return True
    else:
        return False
def添加(pointdict,x1,y1,x2,y2):
#如果(x1,y1)尚未出现,请创建一个空的点列表
如果(x1,y1)不在pointdict中:
pointdict[(x1,y1)]=[]
#将(x2,y2)添加到连接到(x1,y1)的点列表中
pointdict[(x1,y1)]。追加((x2,y2))
def已连接(x1、y1、x2、y2、半径值、pointdict):
半径=((x1-x2)**2+(y1-y2)**2)**5

如果radius您不需要直接使用字典来解决此问题

使用union-find数据结构可以直接解决这个问题,并且不需要字典


相反,当您实现联合查找时,您可以选择使用字典,而不仅仅是字典

否则,您希望如何创建一个
dict
d=dict()
d={}
两者都可以在没有数据的情况下工作。嵌入式词典怎么样?(试着用伪代码写出你想要的答案)也许这会有帮助,我的意思是每次点之间有连接时,我都想创建全新的字典,而不必从创建x个字典开始,其中x是一个固定的数字。例如,我可以将字典设置为d1、d2等,但是如何编写代码来生成名称不同的变量呢?您可以在一个中心字典中创建所有字典(每个字典都有自己的键值)?这对你想做的事有用吗?