【发布时间】:2021-10-21 17:26:45
【问题描述】:
我想在python中创建一个TransitiveClosure()函数,可以输入一个字典,输出一个传递闭包的新字典。
例如R = {1: [3], 2: [4], 3: [], 4: [1]} 将输出R R = {1 : [3], 2 : [1, 3, 4], 3 : [], 4 : [1, 3]}。
我知道传递属性是a->b,b->c,而不是a->c。
我不能使用矩阵,实际上我需要创建一个新字典。我尝试将字典转换为包含集合的列表,但这也有问题。有人可以帮忙吗?
谢谢!
def transitiveClosure(r):
d ={}
R = list(r.items())
# loop for a,b
for a, b in R:
#loop for c, d
for c, d in R:
# checks if b = c and if a, d are in R
if b == c and ((a, d) not in R):
print("Not Transitive")
return False
print("is Transitive")
return True
这将告诉我字典是否可传递,我很难尝试使用此逻辑创建新字典。由于我将输入字典转换为集合列表,我需要将元素添加到列表然后将其转换回字典吗?
【问题讨论】:
-
请分享您尝试的一些代码
-
我添加了告诉我是否传递的代码,我正在尝试使用此逻辑来创建字典
-
在第二个 for 循环中,我尝试追加到一个空列表,然后将该列表添加一个空字典,但我只是得到一个错误对象,无法尝试追加
标签: python function dictionary discrete-mathematics transitive-closure