【发布时间】:2022-01-12 02:15:15
【问题描述】:
我有一个包含嵌套字典的字典列表,如下所示。我想使用生成器和 yield 来遍历 reviews dict 列表并返回所有 rating 给定特定的 user 值。例如 "user" : "A11" 有两条 rating 记录。我希望将这些作为 dict 返回。
data = [{ "product_id" : "123",
"size" : "L",
"color" : "blue",
"reviews" : [
{ "user" : "A11", "rating" : "score1" },
{ "user" : "Z99", "rating" : "score" }] },
{ "product_id" : "987",
"size" : "M",
"color" : "red",
"reviews" : [
{ "user" : "A11", "rating" : "score2" },
{ "user" : "X55", "rating" : "score" }] }
]
我有以下生成器,但它基本上返回所有rating 值,而不管user。如何使函数将值过滤到特定的 user ?
def user_rating(nest, kv):
if isinstance(nest, list):
for i in nest:
for x in user_rating(i, kv):
yield x
elif isinstance(nest, dict):
if kv in nest:
yield nest[kv]
for j in nest.values():
for x in user_rating(j, kv):
yield x
print(list(user_rating(data, 'rating')))
【问题讨论】:
标签: python-3.x dictionary generator nested-lists yield