NameError: name 'd' is not defined in Python list comprehension

NameError: name 'd' is not defined in Python list comprehension

尝试 运行 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

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

date_settings and d['date'] != None

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