Две вещи:
Во-первых, чтобы ответить на ваш вопрос, вы можете сделать следующее:
ext_to_actions = {'java': action1, 'c': action2, 'cpp': action2}
for f in files:
performed_actions = set()
with open(f, 'r') as file:
for line in sorted(file):
print(line)
file_ext = line.split('.')[-1]
if file_ext in ext_to_actions:
action = ext_to_actions[file_ext]
if action not in performed_actions:
action()
performed_actions.add(action)
То, что это делает, снимает возможность выполнения действия более одного разаотслеживая выполненные действия в set
и удерживая вас от повторяющихся действий.
Во-вторых, ваш словарь не будет вести себя так, как вы ожидаете.
>>> strings = {'.java': action1, '.c' or '.cpp': action2}
>>> strings
{'.java': action1, '.c': action2}
Это потому, что когда высоздавая словарь strings
, вы фактически запрашиваете у Python программный выбор между '.c' or '.cpp'
.Посмотрите следующий фрагмент кода, чтобы увидеть, как python интерпретирует это:
>>> '.c' or '.cpp'
'.c'
Вам нужно следующее ...
strings = {'.java': action1, '.cpp': action2, '.c': action2}