python - Python 中的简单语法错误 if else 字典理解

标签 python python-3.x list-comprehension

我有一个集合和字典以及一个值 = 5

v = s = {'a', 'b', 'c'}
d = {'b':5 //<--new value}

例如,如果字典 d 中的键 'b' 在集合 s 中,那么当我返回字典理解时我想让该值等于新值,或者如果集合 s 中的键不在字典 d 中则为 0 .所以这是我的代码,其中 s['b'] = 5 而我的新字典是 ...

{'a':0, 'b':5, 'c':0}

我写了一个dict理解

{  k:d[k] if k in d else k:0 for k in s}
                          ^
SyntaxError: invalid syntax

为什么?!我很生气它不起作用。如果 else 在 python 中不是这样,你就是这样做的?

对不起大家。对于那些访问过这个页面的人,我最初把 { k:d[k] if k in v else k:0 for k in v} 和 s['b'] = 5 只是我创建的新字典的表示一个等于 5 的键 'b',但它不正确,因为你不能像那样迭代一个集合。

所以要重申 v 和 s 是相等的。它们只是指向量和集合。

最佳答案

您要实现的扩展形式是

a = {}
for k in v:
    a[k] = d[k] if k in d else 0

其中 d[k] if k in d else 0the Python's version of ternary operator .看?您需要从表达式的右侧删除 k::

{k: d[k] if k in d else 0 for k in v} # ≡ {k: (d[k] if k in d else 0) for k in v}

你可以简洁的写成

a = {k: d.get(k, 0) for k in d}

关于python - Python 中的简单语法错误 if else 字典理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664841/

相关文章:

python - 爬行深度自动化

python - 大矩阵上的余弦相似度

python - 如何在Python中连接日期?

python - 使用 python 模板字符串类渲染列表

python - 根据同一列表中的先前项目从 Python 列表中删除项目

python - 使用字典的列表理解

python - 不使用remove或fromkeys删除重复项;列表切片; Python

python - 如何通过多列在两个DataFrame中添加不同的列(Pandas)

python - 如何将python列表转为html表格

python - 名称错误在 python 中打印时消失