簡體   English   中英

如何從 Python 索引 JSON 數組中的項目

[英]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" ,它的值是(嵌套的)字典列表,
  • 此列表中的第二個 position (從 0 開始計算 Python)是[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)

Output

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM