0

私は次の形式の辞書を持っています:

a = {(7, 190, 0): {0: 0, 1: 10, 2: 10, 3: 37, 4: 45, 5: 49, 6: 69, 7: 45, 8: 130, 9: 59}}

これをバイナリ形式でファイルに書き込もうとしています。現在python 2.3を使用しています

単純なリストで構造体モジュールを使用しようとしましたが、機能するように見えますが、辞書に移動すると、必要な引数が整数ではないというエラーがスローされます。これに取り組む良い方法は何ですか?私はこのようにsthを試しました:

packed_d=[]
for ssd,(add_val) in a.iteritems(): 
    pack_d=struct.pack('BHB',ssd)
    packed_data.append(pack_d)

これは、エラーがスローされた場所です..

助言がありますか?

編集済み:クール、それは私が見逃していたものです、ジャンヌ。私は次のことを試しましたが、動作しているように見え、すべて問題がないかどうかを確認するためだけに解凍することもできました. これは良い方法だと思いますか?ありがとう!

data = {(7, 190, 0): {0: 0, 1: 101, 2: 7, 3: 0, 4: 0}}
packed_data=[]
for ssd,add_val in data.iteritems():
    pack_d=struct.pack('BHB', *ssd)
    packed_data.append(pack_d) 
    for add,val in data[ssd].iteritems():
        pack_t=struct.pack('BH', add,val) 
        packed_data.append(pack_t)

pack_data = ['\x07\x00\xbe\x00\x00', '\x00\x00\x00\x00', '\x01\x00e\x00', '\x02\x00\x07\x00', '\x03 \x00\x00\x00', '\x04\x00\x00\x00']

4

2 に答える 2

1

ssdタプルです。前にアスタリスクを追加して、個々の引数にアンパックします。

struct.pack('BHB', *ssd)
于 2013-05-03T06:50:44.877 に答える