在python中,有没有办法在这一行代码中打印出i
和j
?
sources = {i: self.path_cost(i, target) for i, j in set}
答案 0 :(得分:4)
不是目前所写的。 (编辑:请参阅AKX的答案, 是可能的。)您必须将dict理解重写为循环。请注意,set
是内置名称,因此不是变量的理想选择。选择一个更好的名字!另外,i
和j
非常通用,将它们重命名为更清晰的名称可能很有用。
sources = {}
for i, j in set:
print(i, j)
sources[i] = self.path_cost(i, target)
答案 1 :(得分:3)
好吧,但这很丑,您真的不想这样做。
想法是print()
函数具有在返回None
时打印内容的副作用。
由于必须评估元组的所有元素,因此我们仅出于副作用将其打包到元组中,然后在元组的第二个元素中进行实际工作,最后仅抓取第二个元素。
sources = {i: (print(i, j), self.path_cost(i, target))[1] for i, j in set}
但是请再次注意,除了临时调试以外,请勿执行其他任何操作。
答案 2 :(得分:1)
这也可能是解决方案:
def print_ij_and_return_i(i, j):
print(i, j)
return i
sources = {i: self.path_cost(print_ij_and_return_i(i, j), target)
for i, j in set}