Max*_*Wen 5 python algorithm dictionary list-comprehension list
我试图在一行中的Python字典中创建一个完整的图形.但是当创建值的列表理解时,我无法弄清楚如何指定key_value不能出现在值列表中(在图中说,没有自循环).
对于n个节点
G = {k:[v for v in range(n)] for k in range(n) }
Run Code Online (Sandbox Code Playgroud)
结果如此(例子n = 3)
{0: [0, 1, 2], 1: [0, 1, 2], 2: [0, 1, 2]}
Run Code Online (Sandbox Code Playgroud)
但我想要的是这个
{0: [1, 2], 1: [0, 2], 2: [0, 1]}
Run Code Online (Sandbox Code Playgroud)
但尝试类似的东西
G = {k:[v for v in range(n) for v !=k] for k in range(n) }
Run Code Online (Sandbox Code Playgroud)
将在列表理解中的k处抛出错误.所以k必须超出列表理解的范围,这是有道理的.
可以用这种方法定义G吗?
要忽略key's value列表中的value,您只需在列表理解中进行验证即可。
G = { k: [v for v in range(n) if v != k] for k in range(n) }
Run Code Online (Sandbox Code Playgroud)
所以对于n = 3你来说图表G会返回:-
{0: [1, 2], 1: [0, 2], 2: [0, 1]}
Run Code Online (Sandbox Code Playgroud)