【问题标题】:NameError: name 'd' is not defined in Python list comprehensionNameError:名称“d”未在 Python 列表理解中定义
【发布时间】:2020-05-09 00:09:51
【问题描述】:

尝试在 python 3.7 中运行以下代码:

date_list = [datetime.datetime.strptime(d['date'], '%Y-%m-%d') for d in date_settings and d['date'] != None]

这是由此产生的错误,有人可以向我解释为什么这个列表理解看不到它自己的变量吗?

date_list = [datetime.datetime.strptime(d['date'], '%Y-%m-%d') for d in date_settings and d['date'] != None]
NameError: name 'd' is not defined

这里是输入的数组:

[{'date': '2020-05-08', 'changed_at': '2020-05-07T20:35:07.854Z'}, {'date': '2020-05-09', 'changed_at': '2020-05-07T20:35:40.604Z'}, {'date': '2020-05-10', 'changed_at': '2020-05-07T20:35:42.936Z'}]

【问题讨论】:

  • for d in date_settings and d['date'] != None——你的意思是if,而不是and

标签: python-3.x list-comprehension nameerror


【解决方案1】:

在你的理解中,你写的地方

for d in date_settings and d['date'] != None

你应该有if,而不是and

正如你目前所拥有的,理解是试图理解表达式

date_settings and d['date'] != None

作为d 应该迭代的东西,这就是为什么它不知道d 在这里应该是什么意思。

【讨论】:

  • 谢谢你的工作就像一个魅力,不知道我是怎么错过的。
猜你喜欢
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2012-01-31
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多