【发布时间】:2015-08-21 19:08:11
【问题描述】:
我正在尝试在 Python 字典中的 1 行中创建一个完整的图表。但是在为值创建列表理解时,我无法弄清楚如何指定 key_value 不能出现在值列表中(在图表中,没有自循环)。
对于 n 个节点
G = {k:[v for v in range(n)] for k in range(n) }
结果(例如 n = 3)
{0: [0, 1, 2], 1: [0, 1, 2], 2: [0, 1, 2]}
但我想要的是这个
{0: [1, 2], 1: [0, 2], 2: [0, 1]}
但尝试类似的事情
G = {k:[v for v in range(n) for v !=k] for k in range(n) }
将在列表推导中的 k 处引发错误。所以 k 必须超出列表理解的范围,这是有道理的。
这个方法可以定义G吗?
【问题讨论】:
-
{ k:[v for v in range(n) if v != k] for k in range(n) }可以忽略与当前k值相似的v值。 -
感谢 Tanveer,这对我来说是一个愚蠢的错误。您应该作为答案而不是评论发布,以便我可以选择它。
-
我很高兴它有帮助。
标签: python algorithm list dictionary list-comprehension