Как я могу просмотреть список диктов в обратном направлении, пока не будет найдено определенное значение ключа? - PullRequest
1 голос
/ 11 ноября 2011

У меня есть диктат:

for i in results[2]:
    print i

Recurring: {'p_pnref': 'E78P2DFEA7E3', 'p_result': '12'}
Recurring: {'p_pnref': 'E78P2E93B933', 'p_result': '0'}
Recurring: {'p_pnref': 'E35P0A5578D3', 'p_result': '12'}
Recurring: {'p_pnref': 'E24P0AA506C3', 'p_result': '24'}
Recurring: {'p_pnref': 'E25P0AFF2C43', 'p_result': '24'}
Recurring: {'p_pnref': 'E34P0B4909A3', 'p_result': '24'}

Меня интересует значение p_result.Я могу легко захватить последнюю запись с помощью list(results[2])[-1].p_result, но я собираюсь пройтись по списку назад, пока не попаду на запись, которая p_result == 0.В этом примере это будет вторая строка вниз (p_pnref == E78P2E93B933).

Как я могу это сделать?Если бы я мог повторить отрицательный индекс, я думаю, что мог бы выяснить остальное, но я не уверен, как это сделать.

Предполагая, что это периодические платежи и 0 == successful payment, я пытаюсь получить "самую последнюю успешную транзакцию».

Ответы [ 2 ]

4 голосов
/ 11 ноября 2011

Я думаю reversed - это то, что вы ищете:

records = [
    {'p_pnref': 'E78P2DFEA7E3', 'p_result': '12'},
    {'p_pnref': 'E78P2E93B933', 'p_result': '0'},
    {'p_pnref': 'E35P0A5578D3', 'p_result': '12'},
    {'p_pnref': 'E24P0AA506C3', 'p_result': '24'},
    {'p_pnref': 'E25P0AFF2C43', 'p_result': '24'},
    {'p_pnref': 'E34P0B4909A3', 'p_result': '24'},
]

for record in reversed(records):
    if record['p_result'] == '0':
        print record['p_pnref']
        break
0 голосов
/ 11 ноября 2011

Возможно, вы хотите:

for i in reversed(results[2]):
    if i["p_result"] == "0":
        do_stuff(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...