如何找到特定键值之前,我如何向后遍历一个dicts列表?

时间:2011-11-11 01:10:00

标签: python dictionary

我有一个dicts的词典:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

可能你想要:

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