您可以使用
next,
enumerate和
generator expression:
>>> foo = [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]
>>> next((i for i,d in enumerate(foo) if 'key1' in d), None)
0
>>> next((i for i,d in enumerate(foo) if 'key2' in d), None)
1
>>> next((i for i,d in enumerate(foo) if 'key3' in d), None)
2
>>> next((i for i,d in enumerate(foo) if 'key4' in d), None)
>>>
请注意,您也可以使用任何默认值替换None:
>>> next((i for i,d in enumerate(foo) if 'key4' in d), 'not found')
'not found'
>>>
另外,我想提一下:
if foo[i].keys()[0] == 'key1':
如果词典有多个项目,则不会始终有效.这是因为字典的键自然是无序的:
>>> d = {'abc':1, 'xyz':2}
>>> d.keys()
['xyz', 'abc']
>>>
另外,没有必要调用字典的keys方法来搜索它的键,因为你有in operator:
>>> 'abc' in d
True
>>> 'def' in d
False
>>>
此解决方案也更有效,因为它避免了创建不必要的列表.