如何从Python中为JSON数组中的项建立索引



我在思考如何通过python 找到JSON对象在JSON数组中的位置

例如

{
"users": [
{
"person1": [
{
"money": 769967967456795806758905768494685798974560,
"name": "person1"
}
]
},
{
"person2": [
{
"money": 696969696969969696969696969,
"name": "person2"
}
]
}
]
}

例如,假设我想从python中的数组中获得人2的位置,因此位置2

(我浏览了网站和之前的问题,但没能弄清楚(

(大家好,来自我上一篇文章:(

如果你需要任何额外的材料张贴,请在这里要求

jsn是JSON对象的名称:

jsn = {
"users": [
{
"person1": [
{
"money": 769967967456795806758905768494685798974560,
"name": "person1"
}
]
},
{
"person2": [
{
"money": 696969696969969696969696969,
"name": "person2"
}
]
}
]
}

它是一个字典

  • 键为"users",其值为(嵌套(字典的列表
  • 该列表中的第二个位置(在Python中从0开始计数(是CCD_ 3

所以解决方案是

>>> jsn["users"][1]
{'person2': [{'money': 696969696969969696969696969, 'name': 'person2'}]}

假设您拥有字典格式的json。如果没有,你可以使用一些库来转换为dict(json库可以这样做(

那么我会迭代dict并检查每个元素是否都有关键字;人2";,如果是,我们找到了元素,可以打印索引。

这是代码:

i = 0
for person in json["users"]:
if "person2" in person:
print(i)
i += 1

可能有一个更清洁的解决方案,但这是我能想到的。

更好的方法是使用枚举

# not a great way of doing it
>>> index = 0
>>> for value in values:
...     print(index, value)
...     index += 1
...
0 a
1 b
2 c
# a better more efficient way of doing it using enumerate()
>>> for i, value in enumerate(json["names]):
...     print(i, value)
...
0 a
1 b
2 c

解决方案:

data = {
"users": [
{
"person1": [
{
"money": 769967967456795806758905768494685798974560,
"name": "person1"
}
]
},
{
"person2": [
{
"money": 696969696969969696969696969,
"name": "person2"
}
]
}
]
}
for i, name in enumerate(data['users']):
print(i,name)

输出

0 {'person1': [{'money': 769967967456795806758905768494685798974560, 'name': 'person1'}]}
1 {'person2': [{'money': 696969696969969696969696969, 'name': 'person2'}]}

使用enumerate,代码要少得多。

然后你可以做一些类似person2 = data['users'][1]的事情

i = 0
for person in json["users"]:
if "person2" in person:
print(i)
break
i += 1

您必须中断循环,否则";i〃;将是整个数组的值。

最新更新