Я работаю с некоторыми данными JSON с Python. В основном у меня есть следующие данные JSON

{
    "users": [
        {
            "name": "John Doe",
            "prefix": "[Test Account]",
            "rank": "10"
        },
        {
            "name": "Jane Doe",
            "prefix": "[Test Account]",
            "rank": "10"
        }
    ]
}

У меня есть цикл, который успешно проходит через пользователей в Python.

for x in data["users"]:
    if username == data["users"]["name"]:
        print("true")

Я хочу получить только значение name. В JS вы бы сделали это так

data.users[x].name

Но как ты это делаешь в Python. Я пробовал такие вещи, как

data["users"][x]["name"]

А также

data["users"[x]]["name"]

Оба выдают ошибки. Любая помощь очень ценится.

3
Jack 20 Авг 2018 в 18:08

4 ответа

Лучший ответ

Попробуй это:

data = {
    "users": [
        {
            "name": "John Doe",
            "prefix": "[Test Account]",
            "rank": "10"
        },
        {
            "name": "Jane Doe",
            "prefix": "[Test Account]",
            "rank": "10"
        }
    ]
}
username = "John Doe"

for x in data["users"]:
    if username == x["name"]:
        print("true")
4
Kevin Kamonseki 20 Авг 2018 в 15:21
data = {
   "users": [
      {
        "name": "John Doe",
        "prefix": "[Test Account]",
        "rank": "10"
      },
      {
        "name": "Jane Doe",
        "prefix": "[Test Account]",
        "rank": "10"
      }
  ]
}

for x in data['users']:
  print(x['name'])
0
Attaque 20 Авг 2018 в 15:26

Я попробовал этот быстрый пример, и он работает:

import json
j = '{"u":[{"a":1},{"a":2},{"a":3}]}'
d=json.loads(j)
print(d["u"][1]["a"])
# output: 2

Каково ваше сообщение об ошибке, когда вы сделали:

data["users"][x]["name"]

?

2
wotanii 20 Авг 2018 в 15:14

В ответе выше вы просто добавляете список и получаете все имена.

data = {
    "users": [
        {
            "name": "John Doe",
            "prefix": "[Test Account]",
            "rank": "10"
        },
        {
            "name": "Jane Doe",
            "prefix": "[Test Account]",
            "rank": "10"
        }
    ]
}
username = "John Doe"
names = []
for x in data["users"]:
    names.append(x["name"])


>>names
['John Doe', 'Jane Doe']
1
Harry_pb 20 Авг 2018 в 15:25
51933668