我在思考如何通过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〃;将是整个数组的值。