不同的数据结构导致python中

时间:2016-07-24 20:02:10

标签: python python-3.x data-structures

我正在尝试使用Facebook Graph API来获取python的内容,而且我的程序没有问题。

但是,在将数据输出到文件时,我发现了一些奇怪的东西。我改变输出结构,然后我的文件会大几倍。

原始数据如下所示:

{
  "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"
    }
  ]
}

之前我用过这个: (我将上面的数据解析为JSON格式,我称之为jsonData

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

它将在文件中输出一些字符串,输出如下:

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

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

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

因为没有结构,所以我将tuples更改为jsonData['data'], 为了使返回成为一个数组:

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

输出结果为:

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

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

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

但文件大小完全不同!例如,我使用tuples获得 196KB 文件,使用jsonData['data']

获得 18.9MB

我使用了python3,并且只通过更改语句进行了多次测试。 文件中的差异是否正常和正常?

1 个答案:

答案 0 :(得分:0)

这两个for循环之间的区别在于,在第二个循环中,每次for循环体运行时,您都会打印出整个结构。

在第一个循环中,您只打印出当前项目(将其附加到输出文件,但您已知道该位!)。

这是一个很小的例子,可能会为你阐明它。

>>> 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]