2012-07-06 24 views
5

Yüz milyonlarca JSON kaydını ayrıştırıyorum ve ilgili bileşenleri dict numaralı telefondan saklıyorum. Sorun şu ki, işleme koyduğum kayıtların sayısı nedeniyle, python dict 'un alttaki hash tablosunun boyutunu birkaç kez arttırmaya zorlanıyor. Bu, yeniden değerlendirilmek zorunda olan bir çok veri ile sonuçlanır. Rehashingin kendisinin çok miktarda olması çok zaman alıyor. Bu nedenle, dict'un temel karma tablosunda minimum boyut ayarlamanın bir yolu olup olmadığını yeniden boyutlandırmak için yeniden boyutlandırma işlemlerinin sayısını en aza indirir.python dict set min_size

Ben this question üzerinde bir cevap itibaren, piton en dict optimize etmeye this okudum ama dict 'ın karma tablosunun başlangıç ​​boyutunu nasıl değiştirileceği bulamıyor. Bu konuda bana yardımcı olabilecek herkes çok minnettar olur.

a = dict.fromkeys(range(n)) 

o n öğeleri karşılamak için sözlük boyutunu zorlar: Bunu yaparsanız

size

cevap

2

ederiz. Bundan sonra oldukça hızlı, ancak bunu yapmak 3s alır.

+0

Elbette, bu beni doğru boyuta getirir. Ama bana doğru anahtarları vermiyor. Her JSON kaydını işleme koyduğumdan, tüm 'n' çok anahtarını silmeli ve doğru olanlarla yeniden doldurmam gerekir. Bu yavaş olmaz mıydı? – inspectorG4dget

+0

Hızla yardımcı olmalı. Bunu yapan küçük bir test yapın. Hiçbir değeri veya seçtiğiniz bir değeri varsayılan olarak tüm değerleri ile bilinen bir boyutta bir dict oluşturacaktır –

+0

Gereksiz değerlerle veri yapısını yapay üfleme daha iyi bir çözüm yok mu? :( – comiventor

İlgili konular