Holen Sie sich die Größe der besiedelten Wörterbuch

Ich würde gerne die Größe des besiedelten dictionary in python. Ich versuchte dies:

>>> dict = {'1':1}
>>> import sys
>>> print dict
{'1': 1}
>>> sys.getsizeof(dict)
140

aber diese scheinbar würde es nicht tun. Der return-Wert, den ich erwarten würde ist 2 (Byte). Ich nehme ein Wörterbuch mit Inhalten wie:

{'L\xa3\x93': '\x15\x015\x02\x00\x00\x00\x01\x02\x02\x04\x1f\x01=\x00\x9d\x00^\x00e\x04\x00\x0b', '\\\xe7\xe6': '\x15\x01=\x02\x00\x00\x00\x01\x02\x02\x04\x1f\x01B\x00\xa1\x00_\x00c\x04\x02\x17', '\\\xe8"': '\x15\xff\x1d\x02\x00\x00\x00\x01\x02\x02\x04\x1f\x01:\x00\x98\x00Z\x00_\x04\x02\x0b', '\\\xe6@': '\x15\x014\x02\x00\x00\x00\x01\x02\x02\x04\x1f\x01@\x00\x9c\x00\\\x00b\x04\x00\x0b'}

und ich möchte wissen, wie viele Bytes an Daten, die ich brauche zu senden. mein index ist 6 Bytes aber wie lange ist der Inhalt? Ich weiß, hier ist es 46Bytes pro index, also ich würde gerne wissen, dass ich brauche, zu übermitteln, 4*(6+46) Bytes.... Wie mache ich das am besten?

Dank,
Ron

Warum erwarten Sie, dass die Größe von 2 bytes? Wenn Sie Ihre Daten ein bytestring wie in deinem zweiten Beispiel, können Sie len(dict[key]) seine Länge in bytes, sondern die Länge in Byte eines bestimmten Wertes im dict ist nicht die gleiche wie die Größe des dict selbst.
Brauchen Sie zum senden über ein Netzwerk oder so etwas? Die Größe hängt davon ab, wie Sie es zu serialisieren.
Wie bekommen Sie 46 bytes 6 bytes? Das ist zweimal das, was ich immer bin: >>> print([len(x) for x in d.values()]) #[23, 23, 23, 23] und print([len(x) for x in d.keys()]) #[3, 3, 3, 3]
ja, ich bekomme diese nach hexlifying die Werte - das ist, wie ich, müssen Sie zu übertragen, hexlified...

InformationsquelleAutor cerr | 2012-11-09

Schreibe einen Kommentar