Hirdetés

Keresés

Új hozzászólás Aktív témák

  • cousin333

    addikt

    válasz atesss #2827 üzenetére

    A mondás szerint akinek kalapácsa van, mindent szögnek néz... :)

    Ebben az esetben én nem használnám a dictionary-t, mert nem erre való. Az a baj vele ugyanis, hogy nem fix az elemek sorrendje - a pin kiosztásod viszont igen (bár létezik OrderedDict).

    Én a helyedben megismerkednék a NamedTuple típussal, illetve nem tudom, hogy hányas Python verziót használsz, de a 3.7-es verzió óta támogatott a DataClass is, ami hasonló céllal (is) készült. Ez utóbbi talán valamivel elegánsabb. Mindkettő a standard könyvtár része.

    from collections import namedtuple
    ...
    Ports = namedtuple('Ports', ['Switch1', 'Switch2', 'Switch3', 'Switch4',
    'Button1', 'Button2', 'NC7', 'NC8'])
    ...
    # i2c_io_readed_array: [True, True, True, True, False, True, False, False]
    port_state = Ports(*i2c_io_readed_array)  # figyelj a csillagra!

    Ilyenkor sorrendben rendeli hozzá az értékeket a címkékhez. Ezek után már egyszerűen tudsz hivatkozni a tömbre, vagy egyes elemeire, valahogy így:

    >>> port_state
    Ports(Switch1=True, Switch2=True, Switch3=True, Switch4=True, Button1=False, Button2=True, NC7=False, NC8=False)

    >>> port_state.Switch2
    True

    Ugyanez dataclass-al:

    from dataclasses import dataclass

    @dataclass
    class InputPorts:
        Switch1: bool
        Switch2: bool
        Switch3: bool
        Switch4: bool
        Button1: bool
        Button2: bool
        NC7: bool
        NC8: bool
    ...
    port_state = InputPorts(*i2c_io_readed_array)

    A használata kb. ugyanaz, mint a namedtuple-nek.

    [ Szerkesztve ]

    "We spared no expense"

Új hozzászólás Aktív témák