我有一个函数,可以根据接收到的数据类型来构建标题。我知道我可以使用ifs做到这一点,这只是出于某种理解字典的目的而对如何嵌入三元运算符的好奇。
我尝试在字典内部实现三元数,并使其始终输出字典。
def _create_header(self, data):
base_header = {
'type': data["type"], # arg provided
'dest_ID' : 1, # arg provided
'src_ ID': 2, # arg provided
}
dest_header = {
'dst_addr': 0, # arg provided
}
data_header = {
'priority': 0, # arg provided
'length': 0, # arg provided
'data_format': 0, # arg provided
'data_type': 0, # arg provided
}
index_header = {
'x_of_y': 0, # len dependant
'y': 0, # len dependant
}
protocol_header = {
'check_type': 0, # sys dependant
'rev': 0, # sys dependant
'reserved': 0, # rev dependant
}
header = {}
return {**base_header, **dest_header if data["type"] in range(4,9) else {}, **data_header, **index_header, **protocol_header}
我总是会收到无效的语法,所以我猜可能是不可能的。只是想知道是否有人尝试过。
答案 0 :(得分:1)
一元运算符and cast(year as int) = 2019
and cast(month as int) = 6
and cast(day as int) between 7 and 10
的绑定强度超出您的想象。
解析三元表达式,它应该可以工作:
**