2016-07-24 4 views
-1

Ich versuche mit Facebook Graph API etwas von Python zu bekommen, und es gibt kein Problem in meinen Programmen.Unterschiedliche Datenstrukturen ergeben in Python eine sehr unterschiedliche Größe

Bei der Ausgabe von Daten in Dateien fand ich jedoch etwas seltsam. Ich ändere eine Struktur in der Ausgabe, dann wäre meine Datei um ein Vielfaches größer.

die ursprünglichen Daten sehen wie folgt aus:

{ 
    "data": [ 
    { 
     "id": "20531316728_10154835146021729", 
     "created_time": "2016-07-21T16:00:00+0000" 
    }, 
    { 
     "id": "20531316728_10154833920726729", 
     "created_time": "2016-07-21T03:02:11+0000" 
    }, 
    { 
     "id": "20531316728_10154729016861729", 
     "created_time": "2016-06-14T00:04:45+0000" 
    } 
    ] 
} 

ich verwendet, um dieses vor: (ich die Daten über zu einem JSON-Format analysiert, und ich nenne es jsonData)

for tuples in jsonData['data']: 
    print(tuples, file=open('test.txt','a')) 

Es wird geben Sie einige Zeichenfolgen in Dateien aus und die Ausgabe sieht wie folgt aus:

{'keyA': 'something1', 'keyB': 'something2'} 

{'keyA': 'something3', 'keyB': 'something4'} 

{'keyA': 'something5', 'keyB': 'something6'} 

Ursache gibt es keine Strukturen, also habe ich die tuples zu jsonData['data'], um die Rückkehr immer ein Array zu machen:

for tuples in jsonData['data']: 
    print(jsonData['data'], file=open('test.txt','a')) 

Der Ausgang wäre:

[ 
    {'keyA': 'something1', 'keyB': 'something2'}, 

    {'keyA': 'something3', 'keyB': 'something4'}, 

    {'keyA': 'something5', 'keyB': 'something6'} ] 

aber die Dateigröße ist völlig anders! Zum Beispiel habe ich eine 196KB Datei durch die tuples verwenden, und bekam einen 18.9MB durch die jsonData['data']

ich mit python3 verwendet, und ich getestet mehrmals nur um die Aussage zu ändern. Sind die Unterschiede in den Dateien üblich und normal?

+0

für Tupel in jsonData [ 'data']: print (jsonData [ 'data'], file = open ('test.txt', 'a')) wird Umschreiben nicht der gesamte Ausgangs viele mal vorbei? – MotKohn

Antwort

0

Der Unterschied zwischen diesen beiden for Schleifen ist, dass in der zweiten, drucken Sie die gesamte Struktur jedes Mal die for Schleife Körper ausgeführt wird.

In der ersten Schleife, drucken Sie nur das aktuelle Element (gut an die Ausgabedatei anhängen, aber Sie wissen dieses Bit bereits!).

Hier ist ein kleines Beispiel, das es für Sie beleuchten könnte.

>>> x = [1, 2, 3, 4, 5] 
>>> for i in x: 
...  print(i) 
... 
1 
2 
3 
4 
5 
>>> for i in x: 
...  print(x) 
... 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
[1, 2, 3, 4, 5] 
+1

Genau !! Ich verstehe! Danke vielmals!! – WenT

+0

Ich bin sehr froh, dass ich dir helfen konnte! –