访问python中的json文件的n个元素

时间:2017-07-29 06:42:59

标签: python json

我有一个按升序排序的json文件。我想访问它的n个元素。例如,我想访问它的最后n = 5个元素。我怎么写呢?

这是我的杰森文件:

{  
"exDict":[  
  [  
     "android.widget.TextView void setText(int)\n",
     1
  ],
  [  
     "com.android.internal.telephony.cdma.SmsMessage com.android.internal.telephony.cdma.SmsMessage createFromPdu(byte[])\n",
     1
  ],
  [  
     "android.app.AlertDialog$Builder void init(android.content.Context)\n",
     1
  ],
  [  
     "android.location.LocationManager void removeGpsStatusListener(android.location.GpsStatus$Listener)\n",
     6
  ],
  [  
     "android.provider.Settings$Secure java.lang.String getString(android.content.ContentResolver,java.lang.String)\n",
     8
  ],
  [  
     "android.provider.Settings$System int getInt(android.content.ContentResolver,java.lang.String,int)\n",
     9
  ],
  [  
     "android.provider.Settings$System boolean putString(android.content.ContentResolver,java.lang.String,java.lang.String)\n",
     10
  ],
  [  
     "android.database.sqlite.SQLiteDatabase void execSQL(java.lang.String,java.lang.Object[])\n",
     13
  ]
 ]
}

1 个答案:

答案 0 :(得分:1)

字典中的数据是列表。因此,您只需使用列表切片来访问数据。这是一个关于slicing

的教程

具体而言,对于您的特定情况,您需要将json文件加载到字典中,如下所示:

import json

with open("/tmp/test.json", "r") as f:
        data = json.load(f)

然后会得到最后n个元素,你会这样做:

data["exDict"][-5:]

一般来说,对起始索引为start_index的n个元素进行切片,你可以这样做:

data["exDict"][start_index:n+1]

有关python中切片的详细说明,请参阅此SO(stackoverflow)讨论:

如何访问每个列表的第一个元素

这是一个工作示例,element[0]包含列表中第一个元素的值:

import json

with open("/tmp/test.json", "r") as f:
        data = json.load(f)

mylist = data["exDict"][-5:]

# to access the first line element of each list: 
for index, element in enumerate(mylist):
        print element[0]