【问题标题】:List comprehension inside dictionary comprehension - scope字典理解中的列表理解 - 范围
【发布时间】: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


【解决方案1】:

要忽略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]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多