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

如何使用dict理解和三元运算符在Python中创建新的dict,python,dictionary,ternary-operator,dictionary-comprehension,Python,Dictionary,Ternary Operator,Dictionary Comprehension,我想使用dict理解和三元运算符来创建一个新的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 d

我想使用dict理解和三元运算符来创建一个新的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()}
#步骤1:创建一个dict,`d`
#{1:a',2:b',3:c',4:d',5:e',6:f',7:g',8:h',9:i',10:j'}
导入字符串
d={k:v代表k,zip中的v(范围(1,11),string.ascii_小写[:10])
#步骤2:使用dict理解和三元运算符获得新的dict

new_dict={k:v如果k这是正确的语法

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

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

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

new\u dict={(k如果kMy期望的结果是,
如果k>=5
,交换键和值,即,
v:k
。但是在你的情况下,它是
v:v
不是v:v。如果你加大括号,它是
(k如果k<5 else v):(v如果k<5 else k)
。很抱歉我的误解。你赢得了我的支持票。
new_dict = {(k if k<5 else v) : (v if k<5 else k) for k, v in d.items()}