Как создать список словарей с использованием определенного условия?

Как можно сформировать список словарей, содержащих только пары ключ-значение из исходного словаря, в которых значение равно 0? 

Исходный словарь:
{
    '2023-02-05': 0.0,
    '2023-02-13': 24365.5,
    '2023-02-15': 0.0,
    '2023-03-13': 36846.51,
    '2023-03-15': 58269.77,
    '2023-03-19': 0.0,
    '2023-03-24': 0.0,
    '2023-04-13': 37025.5,
    '2023-05-15': 74051.0,
    '2023-06-13': 111076.5,
    '2023-06-16': 0.0,
    '2023-06-24': 0.0,
    '2023-07-04': 0.0,
    '2023-07-13': 148102.0,
    '2023-07-23': 0.0
}

Ожидаемый результат:
[
  {
    '2023-02-13': 24365.5,
    '2023-02-15': 0.0
  },
  {
    '2023-03-13': 36846.51,
    '2023-03-15': 58269.77,
    '2023-03-19': 0.0
  },
  {
    '2023-04-13': 37025.5,
    '2023-05-15': 74051.0,
    '2023-06-13': 111076.5,
    '2023-06-16': 0.0
  },
  {
    '2023-07-13': 148102.0,
    '2023-07-23': 0.0
  }
]
  • 17 сентября 2023 г. 21:57
Ответы на вопрос 2
Вы можете использовать следующий код для создания списка словарей, содержащих только пары ключ-значение из исходного словаря, в которых значение равно 0:

```python
# Исходный словарь
source_dict = {
    '2023-02-05': 0.0,
    '2023-02-13': 24365.5,
    '2023-02-15': 0.0,
    '2023-03-13': 36846.51,
    '2023-03-15': 58269.77,
    '2023-03-19': 0.0,
    '2023-03-24': 0.0,
    '2023-04-13': 37025.5,
    '2023-05-15': 74051.0,
    '2023-06-13': 111076.5,
    '2023-06-16': 0.0,
    '2023-06-24': 0.0,
    '2023-07-04': 0.0,
    '2023-07-13': 148102.0,
    '2023-07-23': 0.0
}

# Создание списка словарей
result_list = []
temp_dict = {}

for key, value in source_dict.items():
    if value == 0.0:
        temp_dict[key] = value
    elif temp_dict:
        result_list.append(temp_dict)
        temp_dict = {}
        
if temp_dict:
    result_list.append(temp_dict)

# Вывод результата
print(result_list)
```

Этот код проверяет каждую пару ключ-значение в исходном словаре. Если значение равно 0.0, то эта пара добавляется во временный словарь `temp_dict`. Когда встречается пара с ненулевым значением, временный словарь добавляется в список `result_list`, а затем снова очищается для хранения следующих пар с нулевыми значениями. В конце, если временный словарь не пустой, он также добавляется в список `result_list`. Результат выводится на экран в виде списка словарей, удовлетворяющих условию.
arr = list(d.items())

# Разделение элементов списка на группы
grouped = []
for i, n in enumerate(arr):
    if n[1] and not (i and arr[i - 1][1]):
        grouped.append([])

    if len(grouped) and (n[1] or arr[i - 1][1]):
        grouped[-1].append(n)

# Преобразование групп в словари
result = list(map(dict, grouped))
Похожие вопросы