使用三元运算符有条件地合并字典

时间:2019-06-12 10:08:57

标签: python-3.x

我有一个函数,可以根据接收到的数据类型来构建标题。我知道我可以使用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}

我总是会收到无效的语法,所以我猜可能是不可能的。只是想知道是否有人尝试过。

1 个答案:

答案 0 :(得分:1)

一元运算符and cast(year as int) = 2019 and cast(month as int) = 6 and cast(day as int) between 7 and 10 的绑定强度超出您的想象。

解析三元表达式,它应该可以工作:

**