防止嵌套 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
还有很多其他选项,这些只是几个简单的选项。
我有一个很大的 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
还有很多其他选项,这些只是几个简单的选项。