繁体   English   中英

如何从与另一个列表中的键匹配的字典列表中提取值

[英]How to extract values from list of dictionary that match the keys in another list

我有一个键列表: l_keys = ['a', 'c', 'd']

我有一个字典列表: l_dict = [{'a': 1, 'b': 2, 'c': 3}, {'a':4, 'd':5}]

我想要得到的结果是: [{'a': 1, 'c': 3}, {'a': 4, 'd': 5}]

.

我可以通过以下方式实现此结果

[{k: d[key] for k in l_keys if k in l_dict} for d in l_dict]

.

说明:我实际上遍历 l_dict 中的每个对象,然后遍历 l_keys 中的每个键并检查该键是否在当前对象中,如果是,则检索它及其值

我的问题是,在时间复杂度方面是否有更好、专业和更快的方法来做到这一点。

首先,您的列表理解应该是: [{k: d[k] for k in l_keys if k in d} for d in l_dict]

如果您知道len(l_keys)通常会小于l_dict中的dict ,那么您的方式是最有效的。 否则,最好检查dict中的每个键是否在l_keys中: [{k: d[k] for k in d if k in l_keys} for d in l_dict] l_set = set(l_keys) : [{k: d[k] for k in d if k in l_set} for d in l_dict]

当涉及到时间复杂度时,此页面可能会有所帮助: https ://wiki.python.org/moin/TimeComplexity#dict

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM