[英]How do I index an item in a JSON array from Python
我在想自己如何通過 python 在 JSON 數組中找到 JSON object 的 position
例如
{
"users": [
{
"person1": [
{
"money": 769967967456795806758905768494685798974560,
"name": "person1"
}
]
},
{
"person2": [
{
"money": 696969696969969696969696969,
"name": "person2"
}
]
}
]
}
例如,假設我想從 python 中的數組中獲取人 2 的 position,所以 position 2
(我瀏覽了網站和以前的問題,但無法弄清楚)
(你好來自我上一篇文章的人:))
如果您需要張貼任何額外材料,請在此處申請
假設您有字典格式的 json。 如果不是,您可以使用一些庫轉換為 dict(json 庫可以做到這一點)
然后我會遍歷字典並檢查每個元素是否有鍵,在示例“person2”中,如果是,我們找到了元素並可以打印索引。
這是代碼:
i = 0
for person in json["users"]:
if "person2" in person:
print(i)
i += 1
可能有一個更清潔的解決方案,但這是我能想到的。
讓jsn
是你的 JSON object 的名稱:
jsn = { "users": [ { "person1": [ { "money": 769967967456795806758905768494685798974560, "name": "person1" } ] }, { "person2": [ { "money": 696969696969969696969696969, "name": "person2" } ] } ] }
這是一本字典:
"users"
,它的值是(嵌套的)字典列表,[1]
。所以解決方案是
>>> jsn["users"][1]
{'person2': [{'money': 696969696969969696969696969, 'name': 'person2'}]}
更好的方法是使用枚舉
# 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'}]}
使用枚舉,代碼會少得多。
然后你可以做類似person2 = data['users'][1]
i = 0
for person in json["users"]:
if "person2" in person:
print(i)
break
i += 1
你必須打破循環,否則“i”將成為整個數組的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.