Python3.x:不同案例的变量赋值

时间:2017-08-02 21:08:16

标签: python variables if-statement variable-assignment

我试图根据另一个变量为变量分配不同的值。我使用if...else语句来做到这一点。我想知道是否有更有效/更简单的方法来实现这一目标。

我排除了很多代码。我正逐行分析数据集,其中column[3]可以是任意数字。

我的代码:

byte_3 = format(column[3], 'b').zfill(8)
alarm = int(byte_3[1:8], 2)
if byte_3[0] == '1':
    print_string += 'Alarm '
        if alarm == 0:
            stat = 'Voltage Dropout'
        elif alarm == 1:
            stat = 'Voltage Restored'
        elif alarm == 2:
            stat = 'Probe Started'
        elif alarm == 3:
            stat = 'Probe Completed'
        elif alarm == 4:
            stat = 'Cashbox Removed'
        elif alarm == 5:
            stat = 'Cashbox Restored'
    print(print_string + stat)

我希望stat根据分配给alarm的值进行更改。是否有可能以不同的方式实现这一目标?分配给alarm的大多数值将是1-26中的整数,其中每个单独的整数将更改stat的赋值,即如果alarm为0,我期望{{1} } statVoltage Dropout变为4我希望alarmstat

1 个答案:

答案 0 :(得分:1)

有些答案提出了字典,但听起来你想要更深入的解释,希望我可以提供。字典与列表类似,除了为字典中的每个元素定义键和值。然后,您可以检索给定密钥的值。在你的情况下,它看起来像

alarm = int(byte_3[1:8], 2)
stat_dictionary = {0:'Voltage Dropout',1:'Voltage Restored',2:'Probe Started',3:'Probe Completed',4:'Cashbox Removed',5:'Cashbox Restored'}
if byte_3[0] == '1':
    print_string += 'Alarm '
    print(print_string+stat_dictionary[alarm]

你可以用一个列表替换stat_dictionary并具有相同的功能,但字典是imo,更清晰。