检查字典中是否有一个关键字,并提取同一级别的另一个关键字



我遇到了一个特殊的问题。我有按json行组织的数据(我只显示一行(,其中我们有一个字典和一个字典列表;数量;在d2中,仅当用于";颜色";是一样的。

d1 : {"color": "blue","quantity": 5}
d2 : [{"color": "black", "quantity": 8}, {"color": "blue", "quantity": 3}]

在这种情况下,我需要找到";数量":3,其对应于颜色"1";蓝色";在d2中,d1包含"0";蓝色";。

我只是想看看是否有比我现在做的更好的方法:

color = d2['color']
for element in d2:
if 'color' in element:
if color == element['color']:
print(element['count'])

所以我必须一个接一个地迭代每个元素。有没有一种方法可以做到这一点,只需在d2中搜索关键字而不进行迭代?

您需要进行迭代,以便您的解决方案非常正确。我的意思是,另一种选择就是做一个列表理解。所以很喜欢element = next(elem['quantity'] for elem in d2 if elem['color'] == d1['color']),但我强烈推荐您的代码。

quantity = next(d["quantity"] for d in d2 if d["color"] == d1["color"])

请注意,next()仍然执行迭代。

或者,可以将dict中的d2转换为以颜色为键(假设它们是唯一的(:

d2 = {d["color"]: d for d in d2}
quantity = d2[d1["color"]]["quantity"]

最新更新