【问题标题】:Dictionary comprehension method not working in Python 2.65字典理解方法在 Python 2.65 中不起作用
【发布时间】:2019-03-29 07:59:28
【问题描述】:

我在 Python 3.6 环境中编写了一个脚本,现在需要将它翻译回 Python 2.65。有一行代码它特别不赞成。我使用字典理解来制作变量。 注意:NFHL_sx_firmpanPrelim_sx_firmpan 是我正在比较的字典,以找出它们之间“不共享”的差异。-

 unshared = {k: NFHL_sx_firmpan[k] for k in NFHL_sx_firmpan if k not in Prelim_sx_firmpan}

它会在“for”上引发语法错误,因此我尝试使用带有条件的旧 for 循环:

 unshared = dict()
 for k in NFHL_sx_firmpan:
     if k not in Prelim_sx_firmpan:
        unshared = k: NFHL_sx_firmpan[k]

现在它会在'k' 之后的':' 上引发语法错误。我怎样才能翻译它以便它在 2.65 中工作? (注 2:在 3.6 中可以正常工作)

【问题讨论】:

  • unshared = k: NFHL_sx_firmpan[k] -> unshared[k] = NFHL_sx_firmpan[k]

标签: python-3.6 python-2.6 dictionary-comprehension


【解决方案1】:

是否有任何事情阻止您执行以下操作?此语法应该在两个版本中都有效。

unshared = {}
for k in NFHL_sx_firmpan:
    if k not in Prelim_sx_firmpan:
        unshared[k] = NFHL_sx_firmpan[k]

【讨论】:

  • 是的,解决了它。不知道为什么我之前没有看到。谢谢。
【解决方案2】:

下面的代码应该兼容低于 Python 2.7 的版本

unshared = dict((k, NFHL_sx_firmpan[k]) for k in NFHL_sx_firmpan if k not in Prelim_sx_firmpan)

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2015-05-29
    • 2019-02-24
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2013-01-08
    相关资源
    最近更新 更多