Превращение строки xxxx в адрес списка (???) - PullRequest
1 голос
/ 19 марта 2020

Это сложная проблема для объяснения. У меня есть строка, которая выглядит как «system.cpu.total.pct», которую я извлекаю из json файла конфигурации. Этот конкретный формат требуется в другом месте в моей программе, поэтому я не могу его изменить.

Этот "system.cpu.total.pct" указывает, какое поле мне интересно вытащить из метрического удара (в Elasticsearch).

Мне нужно преобразовать это в адрес списка («это то, что называется»?), Чтобы я мог вытащить вещи из массива результатов базы данных, которые я называю «rawData». Прямо сейчас я делаю это:

if sourceSet == "system.cpu.total.pct":
    dataArray.append(rawData['hits']['hits'][thisRecord]["_source"]['system']['cpu']['total']['pct'])

Но это нехорошо, очевидно, потому что результат жестко запрограммирован.

Как я могу вместо этого написать что-то вроде

dataArray.append(rawData['hits']['hits'][thisRecord]["_source"]["system.cpu.total.pct"])

что будет работать для любой произвольной строки?

Есть предложения? Спасибо!

1 Ответ

1 голос
/ 19 марта 2020

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

if sourceSet == "system.cpu.total.pct":
    d = rawData['hits']['hits'][thisRecord]["_source"]
    for t in sourceSet.split('.'):
        d = d[t]

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