Python создание словаря

Добрый день!

Суть задачи. Код должен создать массив со всеми работниками именами и фамилиями также должен создать словарь тех людей которые получили премию ключ - имя, значение - сумма премии.

РАБОТНИКИ
Иванов О.
Петров И.
Дмитриев Н.
Смирнова О.
Керченских В.
Котов Д.
Бирюкова Н.
Данилов П.
Аранских В.
Лемонов Ю.
Олегова К.

ПРЕМИЯ
ДА
НЕТ
НЕТ
НЕТ
НЕТ
ДА
НЕТ
НЕТ
ДА
НЕТ
НЕТ

СУММА ПРЕМИИ
3600
-
-
-
-
2500
-
-
1000
-
-

Массив со всеми работниками я создала. Не могу понять как все это приобразовать в словарь с ключем и значением. Все данные храняться в файле.

Ниже часть кода создающая массив с фамилиями.

file = open('ZP3', 'r', encoding='UTF-8')
value = []
for line in file.readlines():
    if line == 'ПРЕМИЯ\n':
        del line
        break
    else:
        value.append(line)

1 ответ

Решение

Пользуйся подсветкой кода, в редакторе она есть.

def get_sample(data: list, pattern: str) -> list:
    """
    Получить выборку по строковому значению.
    :param data: Список значений
    :param pattern: Строка для определения
    :return: Выборка
    """

    sample_data = list()
    # Добавить ли текущее значение в список.
    is_append = False
    # Индекс строки со значением `pattern`.
    index = 0
    for i, value in enumerate(data):
        if value == pattern:
            index = i
            is_append = True
        elif is_append and value.strip() == "":
            # Если дошли до пустой строки, тогда выходим из цикла.
            break

        if i > index and is_append:
            sample_data.append(value)

    return sample_data

filename = "data.txt"

# Получить данные из файла.
with open(filename, "r") as fp:
    data = fp.read().splitlines()

# Имена всех сотрудников. 
names = get_sample(data, "РАБОТНИКИ")
print(names)

# Наличие премии.
bonuses = get_sample(data, "ПРЕМИЯ")

# Суммы премий.
bonuses_sums = get_sample(data, "СУММА ПРЕМИИ")

# Словарь с премиями.
names_bonuses = dict()
for i, value in enumerate(bonuses):
    if value == "ДА":
        names_bonuses[names[i]] = bonuses_sums[i]

print(names_bonuses)

 

Другие вопросы по тегам