我不明白计算条件IF
如果字典:-
为什么当代码
dlist = [{'Bilbo':'Ian','Frodo':'Elijah'} , {'Bilbo':'Martin','Thorin':'Richard'}]
k = 'Bilbo'
[ ks[k] if k in ks else 'NOT PRESENT' for ks in dlist]
但是我写代码的时候
[ ks[k] for ks in dlist if k in ks else 'NOT PRESENT' ]
我得到一个SyntaxError: invalid syntax
Tags:
@Mikhail,我理解你对这个问题的看法,这不是一个“我的代码不起作用”的问题,而是一个“Python为什么这样做?”。我也被它绊倒了一段时间,让我绊倒的是我把它当成了一个作业语句,例如:
这完全是字面意思:“给我“早上好”如果…,否则给我“晚上好”并绑定到我的问候语。像这样的赋值语句很常见,在其他类似C的语言中,它们甚至有专门用于此的turnary运算符。然而,这在列表理解中是不一样的。你知道吗
列表理解(在Python中)的查看(和阅读)方式应该略有不同。你知道吗
现在我们需要以不同的方式来“解读”,因为逻辑略有不同。我总是从右手边开始(我知道应该从左到右读,但我想知道我们首先要处理的是什么)。所以我会读到:
更简单的描述是:
它从范围(1100)中抽取x,并测试它是否为偶数。你知道吗
现在真正恼人的是,我完全同意你的逻辑基础!阅读:
[x from xs, if (conditions...)]
对我来说更有意义,其他语言(比如Haskell)就是这样做的。但不是Python。长话短说,语法就是语法,我们必须遵守它:)作为比较,这里有一个使用Haskell的类似示例,我认为它更符合您描述的思考方式(表达式,后跟条件):
或者作为仅对“AM”作出反应的列表理解:
你的代码不太管用。正如我在第一行中所理解的,我们将值与键进行比较。你知道吗
暗示
你的提议
不能以合理的方式隐式放置这些括号。下面是对语法进行分组的各种方法。他们中没有一个能达到你的目的:
相关问题 更多 >
编程相关推荐