У меня проблема. У меня есть такой вложенный словарь:
{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()))
Но это приводит к списку только со значениями словарей, но я хочу, чтобы они также содержали ключ.
Я получил это прямо сейчас в результате:
[{'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}}]
Для словаря, который вы можете перемещать по ключу, это еще проще:
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}}
Комментариев нет:
Отправить комментарий