如何倒序遍历字典列表,直到找到特定的键值?

1 投票
2 回答
2087 浏览
提问于 2025-04-17 06:05

我有一个字典里面又包含字典:

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 == 成功的付款,我想获取“最近的一笔成功交易”。

2 个回答

0

可能你想要的是:

for i in reversed(results[2]):
    if i["p_result"] == "0":
        do_stuff(i)
4

我觉得你要找的就是 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

撰写回答