Python 从嵌套字典中获取字典列表,其中值大于

Python Get list of dictionaries from nested dictionary where value is greater than

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

{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}}

我需要做的是创建一个 array/list 和所有 amount 大于 10 的词典。我已经有以下内容:

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

但这会产生一个仅包含字典值的列表,但我希望它们也包含键。

结果我现在得到了这个:

[{'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]

我怎样才能同时包含密钥?

IIUC,列表理解应该有效:

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}}]

如果是key遍历的字典,就更简单了:

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}}