理解字典列表
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']]
这是“简化”了吗?我不确定。列表理解并不神奇,它们并不总能简化代码或使其更具可读性。
我知道这并不是关于列表推导的第一个问题,但我已经环顾四周并试验了一段时间,但无法弄清楚这个问题。先说声抱歉,我是一个从失败中学习的自学新手。
这是工作代码,但它尖叫着列表理解。我理解列表理解并使用它们,但是堆叠 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']]
这是“简化”了吗?我不确定。列表理解并不神奇,它们并不总能简化代码或使其更具可读性。