【发布时间】:2019-11-13 09:08:41
【问题描述】:
所以我看过一些我试图查看的帖子,但我的用例有点不同。我有 3 个列表,其中包含多个 dicts,要从中获取信息,我有时必须通过 2 个或有时全部 3 个。
目前我这样做:
item_dict = {}
excludes = ["excluded devices"]
confirm = "value"
for item in first_list_dict:
for second_item in second_list_dict:
for key, value in item.items():
if value == confirm and item["key"] == "value" and item["key2"] not in excludes and item["key3"] == second_item["key"]:
if second_item["key"] not in item_dict:
item_dict[second_item["key"]] = [{item["key"]: {"info": item["key"], "mac_address": item["key"]}}]
else:
item_dict[second_item["key"]].append({item["key"]: {"info": item["key"], "mac_address": item["key"]}})
这看起来......一团糟,所以让我解释一下我在做什么。
2 个字典列表,其中包含一些单独的数据,但可以通过它们在每个字典中都有的键链接在一起。
for 循环本质上是用来确认某些条件存在于单独的列表中,外部值和字典中的键匹配,将项目添加到字典中。
我想知道的是,如果有替代方法可以使用这个嵌套的 for 循环,并且可以解释它是如何工作的,我将非常感激。如果您希望我回答任何问题,请随时提出,以便我进一步解释。
【问题讨论】:
-
也许你可以看看
any或all函数,你也可以使用in运算符的一些列表理解? -
您可以为
first_list_dict和second_list_dict添加一个小例子吗?我现在所看到的:如果item_dict是defaultdict,则可以删除if-else块。
标签: python python-3.x list dictionary for-loop