从嵌套字典中获取value大于的字典列表



我有一个问题。我有一个像这样的嵌套字典:

{1: {'amount': 200.0, 'quantity': 0}, 2: {'amount': 200.0, 'quantity': 0}, 3: {'amount': 200.0, 'quantity': 0}, 4: {'amount': 200.0, 'quantity': 0}, 5: {'amount': 200.0, 'quantity': 0}, 6: {'amount': 200.0, 'quantity': 0}, 7: {'amount': 200.0, 'quantity': 0}, 8: {'amount': 200.0, 'quantity': 0}, 9: {'amount': 200.0, 'quantity': 0}, 10: {'amount': 200.0, 'quantity': 0}}

我需要做的是创建一个包含所有amount大于10的字典的数组/列表。我已经有了以下内容:

list(filter(lambda x: x['amount'] >= 10, myDict.values()))

但这将导致一个仅包含字典值的列表,但我希望它们也包含键。

I got this now as result:

[{'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}, {'amount': 200.0, 'quantity': 0}]

但这就是我需要的:

[{1: {'amount': 200.0, 'quantity': 0}}, {2: {'amount': 200.0, 'quantity': 0}}, etc]

我怎样才能包括钥匙?

如果是这样的话,列表推导应该可以工作:

out = [{k:v} for k,v in my_data.items() if v['amount']>=10]

或使用filter:

out = [*map(dict, zip(filter(lambda x: x[1]['amount']>=10, my_data.items())))]

输出:

[{1: {'amount': 200.0, 'quantity': 0}},
 {2: {'amount': 200.0, 'quantity': 0}},
 {3: {'amount': 200.0, 'quantity': 0}},
 ...
 {9: {'amount': 200.0, 'quantity': 0}},
 {10: {'amount': 200.0, 'quantity': 0}}]

对于可以按键遍历的字典,甚至更简单:

out = {k:v for k,v in my_data.items() if v['amount']>=10}

out = dict(filter(lambda x: x[1]['amount']>=10, my_data.items()))

,其中输出:

{1: {'amount': 200.0, 'quantity': 0},
 2: {'amount': 200.0, 'quantity': 0},
 3: {'amount': 200.0, 'quantity': 0},
 ...
 9: {'amount': 200.0, 'quantity': 0},
 10: {'amount': 200.0, 'quantity': 0}}

相关内容

  • 没有找到相关文章

最新更新