class Rule:
    def __init__(self, if_attrs, then_attr):
        self.then_name = then_attr['name']
        self.then_value = then_attr['value']
        self.if_attrs = if_attrs

    def check_rule(self, context):
        result = True
        for attr in self.if_attrs:
            have_val = context.get(attr)
            # содержится в контекстном стеке
            if have_val:
                p_result = have_val in self.if_attrs[attr]
                result = result and p_result
                if not result:
                    return False
            else:
                return {attr: None}
        return {self.then_name: self.then_value} if result else False


attributes = {'вид': ['прыжки в воду', 'дзюдо', 'бокс', 'водное поло', 'лёгкая атлетика'],
              'место': ['спортзал', 'стадион', 'бассейн', 'иное'],
              'инвентарь': ['мяч', 'перчатки', 'нет'],
              'стихия': ['вода', 'земля', 'покрытие', 'природа'],
              'покрытие': ['маты', 'другое'],
              'измерение': ['баллы', 'оценки (вазари/иппон)', 'время', 'другое'],
              'участники': ['1', '> 1'],
              'тип_количество': ['личный', 'командный'],
              'тип': ['единоборства', 'игровой']}

rules = [
          Rule({'стихия': 'вода', 'инвентарь': 'нет',
                'тип_количество': 'личный', 'измерение': 'баллы'},
               {'name': 'вид', 'value': 'прыжки в воду'}),

          Rule({'стихия': 'вода', 'инвентарь': 'мяч',
                'тип_количество': 'командный'},
               {'name': 'вид', 'value': 'водное поло'}),

          Rule({'стихия': 'земля', 'инвентарь': 'нет',
                'тип_количество': 'личный'},
               {'name': 'вид', 'value': 'лёгкая атлетика'}),

          Rule({'тип': 'единоборства', 'измерение': 'оценки (вазари/иппон)'},
               {'name': 'вид', 'value': 'дзюдо'}),

          Rule({'тип': 'единоборства', 'инвентарь': 'перчатки',
               'измерение': 'баллы'},
               {'name': 'вид', 'value': 'бокс'}),

          Rule({'стихия': 'покрытие', 'покрытие': 'маты'},
               {'name': 'тип', 'value': 'единоборства'}),

          Rule({'участники': '1'},
               {'name': 'тип_количество', 'value': 'личный'}),

          Rule({'участники': '> 1'},
               {'name': 'тип_количество', 'value': 'командный'}),

          Rule({'место': 'иное'},
               {'name': 'стихия', 'value': 'природа'}),

          Rule({'место': 'стадион'},
               {'name': 'стихия', 'value': 'земля'}),

          Rule({'место': 'спортзал'},
               {'name': 'стихия', 'value': 'покрытие'}),

          Rule({'место': 'бассейн'},
               {'name': 'стихия', 'value': 'вода'})
          ]


questions = {'место': "В каком месте проходят соревнования по данному виду спорта?",
             'участники': "Количество участников, представляющих спортивную единицу?",
             'инвентарь': "Главный аттрибут(инвентарь) данного вида спорта?",
             'покрытие': "Тип покрытия места, где проходят соревнования по данному виду спорта?",
             'измерение': "Как оценивается выступление спортсменов?",
            }