Почему в список добавляются все значения из условия, а в словарь нет?
some_lst = [{'a': 'b', 'c': 3}, {'a': 'd', 'c': 3}, {'a': 'b', 'c': 4}]
some_dict = dict()
new_lst = []
for i in some_lst:
if i['a'] == 'b':
new_lst.append(
dict(
letter=i['a'],
num=i['c']
)
)
some_dict['data'] = {
'letter': i['a'],
'num': i['c']
}
print(new_lst)
print(some_dict)
Ответы (1 шт):
Автор решения: Aidar
→ Ссылка
При добавлении значений в список new_lst, каждый элемент списка создается как отдельный словарь с ключами 'letter' и 'num', которые берутся из условия if i['a'] == 'b'.
При добавлении значений в словарь some_dict, ключ 'data' устанавливается только один раз, и каждый раз значение этого ключа обновляется для каждого элемента some_lst, удовлетворяющего условию if i['a'] == 'b'.
Если вы хотите добавить в словарь some_dict все элементы, удовлетворяющие условию, вам нужно использовать список или другую структуру данных в качестве значения для ключа 'data'.
some_lst = [{'a': 'b', 'c': 3}, {'a': 'd', 'c': 3}, {'a': 'b', 'c': 4}]
some_dict = dict()
new_lst = []
some_dict['data'] = [] # Используем список в качестве значения для ключа 'data'
for i in some_lst:
if i['a'] == 'b':
new_lst.append(
dict(
letter=i['a'],
num=i['c']
)
)
some_dict['data'].append( # Добавляем каждый элемент в список значений ключа 'data'
dict(
letter=i['a'],
num=i['c']
)
)
print(new_lst)
print(some_dict)