理解字典列表

Comprehension with Lists of Dictionaries

我知道这并不是关于列表推导的第一个问题,但我已经环顾四周并试验了一段时间,但无法弄清楚这个问题。先说声抱歉,我是一个从失败中学习的自学新手。

这是工作代码,但它尖叫着列表理解。我理解列表理解并使用它们,但是堆叠 for 和使用列表中的字典的组合让我的大脑崩溃了。你会如何简化这个:

results = []
for system in systems:  # list of dicts
    for result in telnet_results:   # list of dicts
        if system['master_ip'] == result['master_ip']:
            combined = {**system, **result}  # merge dicts, right takes precedence
            results.append(combined)

提前感谢您对此提供的任何帮助。

results = [{**system, **result} for system in systems for result in telnet_results if 
           system['master_ip'] == result['master_ip']]

也可以拆分得更合乎逻辑:

results = [{**system, **result}
           for system in systems
           for result in telnet_results
           if system['master_ip'] == result['master_ip']]

这是“简化”了吗?我不确定。列表理解并不神奇,它们并不总能简化代码或使其更具可读性。