字典理解中的列表理解 - 范围
List comprehension inside dictionary comprehension - scope
我试图在 1 行的 Python 字典中创建一个完整的图表。但是在为值创建列表理解时,我无法弄清楚如何指定 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吗?
要忽略 value
列表中的 key's value
,您只需在 list comprehension.
中进行验证
G = { k: [v for v in range(n) if v != k] for k in range(n) }
所以对于 n = 3
你的图表 G
会 return :-
{0: [1, 2], 1: [0, 2], 2: [0, 1]}
我试图在 1 行的 Python 字典中创建一个完整的图表。但是在为值创建列表理解时,我无法弄清楚如何指定 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吗?
要忽略 value
列表中的 key's value
,您只需在 list comprehension.
G = { k: [v for v in range(n) if v != k] for k in range(n) }
所以对于 n = 3
你的图表 G
会 return :-
{0: [1, 2], 1: [0, 2], 2: [0, 1]}