python - 字典理解中的列表理解 - 范围

标签 python algorithm list dictionary list-comprehension

我正在尝试在 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吗?

最佳答案

要忽略 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 将返回:-

{0: [1, 2], 1: [0, 2], 2: [0, 1]}

关于python - 字典理解中的列表理解 - 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690134/

相关文章:

python - Anaconda 安装找不到包

python - 如何使用 flask 和 wtforms 使单选字段显示默认值

python - 如何在Python中检测函数最末端的峰值?

python - 如何加入独立的数据框并进入pandas?

r - 列表数据框类上匹配日期的百分比计算

quad (2 tris) 索引的算法

c++ - 将任务拆分为类别

冒泡排序的算法分析

swift - 独特的对象数组

list - 合并(合并)不同长度的向量