Python идентифицирует индекс по словарю с массивом - PullRequest
0 голосов
/ 15 марта 2019

Я хотел бы получить индекс следующей пары ключ-значение:

Key => [CorrectionHistory][Key] Value => 456

{'CorrectionHistory': [{'key': 123, 'CorrectionsAll': [{'CorrChngDesc': 'Discount Line Changed'}, {'CorrChngDesc': 'Commodity Line Changed'}]}, {'key': 456, 'CorrectionsAll': [{'CorrChngDesc': 'AC Added/Modified'}, {'CorrChngDesc': 'CMDY Added/Modified'}]}, {'key': 789, 'CorrectionsAll': [{'CorrChngDesc': 'AC Added/Modified'}]}}

Может кто-нибудь пролить свет на это?

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Я предполагаю, что у вас есть только клавиша CorrectionHistory, так как это ваш пример.В моем примере функция, которую я написал, очень проста, просто чтобы доказать, что она выполняет ту работу, которую вы упомянули, но ее можно легко обобщить:

a = {
        'CorrectionHistory': [
            {'key': 123, 'CorrectionsAll': [{'CorrChngDesc': 'Discount Line Changed'}, {'CorrChngDesc': 'Commodity Line Changed'}]},
            {'key': 456, 'CorrectionsAll': [{'CorrChngDesc': 'AC Added/Modified'}, {'CorrChngDesc': 'CMDY Added/Modified'}]},
            {'key': 789, 'CorrectionsAll': [{'CorrChngDesc': 'AC Added/Modified'}]}
        ]
    }


def get_index_for_key(key):
    for index, item in enumerate(a['CorrectionHistory']):
        if item['key'] == key:
            return index
    return None


print(get_index_for_key(456))

Результат: 1 индекс, который вы ищете

Пожалуйста, дайте мне знать, если это то, что вы ищете.

0 голосов
/ 15 марта 2019

Также один вкладыш:

data = {'CorrectionHistory': [{'key': 123, 'CorrectionsAll': [{'CorrChngDesc': 'Discount Line Changed'}, {'CorrChngDesc': 'Commodity Line Changed'}]}, {'key': 456, 'CorrectionsAll': [{'CorrChngDesc': 'AC Added/Modified'}, {'CorrChngDesc': 'CMDY Added/Modified'}]}, {'key': 789, 'CorrectionsAll': [{'CorrChngDesc': 'AC Added/Modified'}]}]}

index = [i for i, x in enumerate(data['CorrectionHistory']) if x['key'] == 456][0]

Выход:

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