-
Notifications
You must be signed in to change notification settings - Fork 0
/
homework_1_task_1(var2).py
37 lines (33 loc) · 1.97 KB
/
homework_1_task_1(var2).py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from typing import Any, Dict, List
def filter_by_first_met_value(
dataset: List[Dict[str, Any]], keys: List[str]
) -> List[Dict[str, Any]]:
"""Filter dataset by first met value in keys"""
list_result: list = [] # Пустой список Бв котором будут уникальные словари
list_unique_value: list = [] # Пустой список в котором будут уникальные значения
for next_dict in dataset: # Итерируемся по списку из условия
my_value_base: list = [value for key, value in next_dict.items() if key in keys] # оздаем текущий список значений из словаря
for my_value in my_value_base: # Итерируемся по списку значений
if my_value not in list_unique_value and next_dict not in list_result: # Делаем проверку и если необходимо добавляем словарь в список
list_result.append(next_dict)
if my_value not in list_unique_value: # добавляем значение в список уникальных значений(Это делаем отдельно ,чтобы не было повторенй в списке словарей)
list_unique_value.append(my_value)
return list_result
origin = [
{"foo": "FOO", "bar": "BAR", "foobar": "fb"},
{"foo": "F", "bar": "BAR", "foobar": "fb"},
{"foo": "FOO", "bar": "BAR", "foobar": "fb"},
]
origin1 = [
{"name": "Serhii"},
{"name": "Vlad"},
{"name": "Vlad"},
{"name": "Vlad"},
{"name": "Serhii"},
]
print(filter_by_first_met_value(origin, ["foo", "bar"]))
print(filter_by_first_met_value(origin, ["foo"]))
print(filter_by_first_met_value(origin, ["foobar"]))
print(filter_by_first_met_value(origin, ["bar"]))
print(filter_by_first_met_value(origin, ["foo", "bar", "foobar"]))
print(filter_by_first_met_value(origin1, ["name"]))