我有一个按升序排序的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
]
]
}
答案 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]