如何使用字典理解和三元运算符在 Python 中创建新字典

How do I use dict comprehensions and the ternary operator to create a new dict in Python

我想使用字典理解和三元运算符来创建一个新的字典。这是一个MWE。

# Step 1: Create a dict, `d`
# {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j'}
import string
d = {k : v for k, v in zip(range(1, 11), string.ascii_lowercase[:10])}

# Step 2: Use dict comprehensions and the ternary operator to get a new dict
new_dict = {k : v if k<5 else v : k for k, v in d.items()}

但是遇到这个问题,

    new_dict = {k : v if k<5 else v : k for k, v in d.items()}
                                    ^
SyntaxError: invalid syntax

为什么 SyntaxError 变红了?如何解决?

这是正确的语法。

new_dict = {k if k < 5 else v : v if k < 5 else k for k, v in d.items()}

key:value 语法不是真正的表达式,因此不能在其上使用三元运算符。需要对key和value部分分别进行三元运算:

new_dict = {(k if k<5 else v) : (v if k<5 else k) for k, v in d.items()}

(我将您的测试更改为 k<5 而不是 v<5,假设您想将数字键与 5 进行比较;将字符串值与 5 进行比较在 Python 3 并且会在 Python 2 中给出无意义的结果。)