-3

次のように辞書に特定の値があるかどうかを確認すると、エラーが発生することに驚いています。

if src in mac_dict:

私はこのように私の辞書を埋めました:

data = database.get(mac, "get_nodelist", version=1)
if data:
    fh = StringIO(data)
    version = ord(fh.read(1))
    length = ord2b(fh.read(2))
    length = length / 8
    macs = {}
    for i in xrange(0,length):
        mac = fh.read(6)[-3:]
        tdm = ord2b(fh.read(2))
        macs[mac] = tdm
        print hexlify(mac) + " - " + str(tdm)
    fh.close()
    fh = open("macs.bin","wb")
    pickle.dump(macs,fh)
    fh.close()
    return macs

data には、6 バイトの mac アドレスと 2 バイトの tdm が sa 行に含まれています。それらはprintステートメントで適切にデコードされているようですが、src(バイナリ)がmac_dictの一部であるかどうかを確認したい場合、スクリプトは例外をスローします-間違いなくそこにいるはずですが..何かヒントはありますか?

ありがとうございました!ロン

4

1 に答える 1

1

値が存在するかどうかを確認するには、これを行う必要があります。

if src in mac_dict.values():

あなたのコードがしていることは、srcがすでにキーとして使用されているかどうかをチェックすることです。辞書クラスにも同等のメソッドがあります。

if mac_dict.has_key(src):
于 2012-11-06T20:26:10.730 に答える