防止嵌套 if 中的重复

Preventing repetition in nested if

我有一个很大的 Jason 文件,我想对其进行交互并计算一些出现的次数。 json 文件包含 12 种不同类型的“foo”,每个“foo”都可以具有 12 种预定义状态之一,例如“打开”、“关闭”、“停放”、“正在调查”,例如

如果我按如下所示处理它,我会得到很多重复代码,但我不知道如何获得更精简的代码。

if foo == 'Foo1':
  Foo1.opened += 1 
  Foo1.closed += 1 
  Foo1.parked += 1 

elif foo == 'Foo2': 
  Foo2.opened += 1 
  Foo2.closed += 1 
  Foo2.parked += 1 

elif foo == 'Foo3':
  ...

这避免了重复而不引入任何重大变化:

if foo == 'Foo1':
  foo_bar = Foo1
elif foo == 'Foo2': 
  foo_bar = Foo2
elif foo == 'Foo3':
  foo_bar = Foo3
  
foo_bar.opened += 1
foo_bar.closed += 1
foo_bar.parked += 1

或者你可以用你的项目定义一个字典:

dict_foo = {'Foo1': Foo1, 'Foo2': Foo2, 'Foo3': Foo3}
foo_bar = dict_foo[foo]
foo_bar.opened += 1
foo_bar.closed += 1
foo_bar.parked += 1

还有很多其他选项,这些只是几个简单的选项。