我想使用dict comprehensions和三元运算符来创建一个新的dict。这是一个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
会被抨击?如何解决?
答案 0 :(得分:4)
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中。)
答案 1 :(得分:1)
这是正确的语法。
$get_cats = "SELECT * FROM Rest_Category
INNER JOIN Rest_Details
ON Rest_Category.CategoryID = Rest_Details.Cat_ID
INNER JOIN Delivery_Pcode
ON Delivery_Pcode.Restaurant_ID = Rest_Details.Resturant_ID
WHERE Delivery_Pcode.Pcode= $searchq";