Как получить доступ к значению 1-го ключа всех словарей, сохраненных в виде списка для ключа в JSON, используя PYTHON - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть JSON, который выглядит следующим образом: -

{
        "name": "PT",
        "batservers": [
            {"name": "bat1", "qmchannel": "abcd", "mount": "efgh"},
            {"name": "bat2", "qmchannel": "abcd", "mount": "efgh"},
            {"name": "bat3", "qmchannel": "abcd", "mount": "efgh"},
        ]
    }

Я хочу получить значение "name", присутствующее во всем словаре, и сохранить его в переменной списка, т.е. ["bat1","bat2", "bat3"]

Я пробовал что-то вроде этого: -

batsList = env["batservers"][0:]["name"]

, но он отображает следующую ошибку: -

TypeError: list indices must be integers or slices, not str

Я знаю, яможет сделать это с помощью цикла, но может кто-нибудь, пожалуйста, помогите мне сделать с помощью однострочного кода способом, который я пытаюсь выше?

Спасибо, SUYASH GUPTA.

Ответы [ 5 ]

0 голосов
/ 06 декабря 2018

Это базовое решение, использующее цикл for для итерации по суб словарю и добавление к пустому списку res.

res = []
for item in env["batservers"]:
  res.append(item["name"])

print (res) #=> ['bat1', 'bat2', 'bat3']
0 голосов
/ 06 декабря 2018

Как насчет сохранения списка как:

list_of_names = [x [name] для x в env ["batservers"]]

0 голосов
/ 06 декабря 2018

env["batservers"][0:] возвращает список, и вы не можете получить прямой доступ к значениям диктов в списке.

Вы можете использовать понимание списка:

names = [elem["name"] for elem in env["batservers"]]
0 голосов
/ 06 декабря 2018

Вы не можете сделать это без цикла.Но цикл может быть списком понимания:

batsList = [b['name'] for b in env["batservers"]
0 голосов
/ 06 декабря 2018

Попробуйте:

[b['name'] for b in env['batservers']]

Или вот:

map(lambda b: b['name'], env['batservers'])

[0:] мало что для вас делает: возвращает тот же массив словарей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...