Python 理解中变量的赋值

Python 理解中变量的赋值,python,tuples,dictionary-comprehension,Python,Tuples,Dictionary Comprehension,我有一个数据列表,描述服务器之间的通信流(工作区——本质上是一个应用程序名、源、目的地、端口、协议)。我的当前数据在每个观察到的通信中有一行。我想汇总所有共享相同特征但具有不同来源的值,并将它们合并到一个记录中,\n使用多个来源的分隔值 我想做如下事情: #Identify unique combinations of values on which to group records dst_combos = list({ (p['Workspace'],p['future ds

我有一个数据列表,描述服务器之间的通信流(工作区——本质上是一个应用程序名、源、目的地、端口、协议)。我的当前数据在每个观察到的通信中有一行。我想汇总所有共享相同特征但具有不同来源的值,并将它们合并到一个记录中,\n使用多个来源的分隔值

我想做如下事情:

    #Identify unique combinations of values on which to group records
    dst_combos = list({ (p['Workspace'],p['future dst'],p['port'],p['protocol']) 
           for p in self.policy })
    
    #build records
    self.fw_rules = [ {
        'Name'          :   workspace,
        'Source'        :   '\n'.join([choose_identifier(p,'source') for p in self.policy if (p['Workspace'],p['future dst'],p['port'],p['protocol']) == d] ),
        'Destination'   :   choose_identifier(future_dst,'dest'),
        'Port'          :   port,
        'Protocol'      :   protocol            
        }
    for d in dst_combos for workspace, future_dst, port, protocol = d  
    ]
现在我已经发现上面的问题是,我不能在理解中解包元组。我可以把它做成一个列表,只引用列表上的索引,但这会使代码的可读性大大降低。我想有更好的方法,但我不确定那是什么。建议

另外,choose_identifier()只是一个帮助函数,它尝试返回设备名称(如果可用)和地址(如果名称不可用)

您可以在列表中解包,您只需要
[…对于工作区、未来的dst、端口、dst组合中的协议]