Spa*_*ine 3 python dictionary ternary-operator dictionary-comprehension
我想使用字典推导式和三元运算符来创建一个新的字典。这是一个 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()}
Run Code Online (Sandbox Code Playgroud)
但遇到这个问题,
new_dict = {k : v if k<5 else v : k for k, v in d.items()}
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
为什么会被SyntaxError激怒?如何修复它?
该key:value语法不是真正的表达式,因此您不能对其使用三元运算符。需要对key和value部分分别进行三元运算:
new_dict = {(k if k<5 else v) : (v if k<5 else k) for k, v in d.items()}
Run Code Online (Sandbox Code Playgroud)
(我将 test 更改为k<5而不是v<5,假设您想要将数字键与 5 进行比较;将字符串值与 5 进行比较在 Python 3 中不起作用,并且在 Python 2 中会给出毫无意义的结果。)
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |