在词典列表中查找索引

霍尔本

如果我知道键名,那么当数据结构如下时,如何找到列表索引?

foo = [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]

例如,给定字符串'key2',上面列表中的索引是什么?

我当前的代码:

for i in xrange(len(foo)):
    if foo[i].keys()[0] == 'key1':
        print i

但是,我很好奇是否有一些不需要显式循环的技巧。

用户名

您可以使用nextenumerate以及发电机的表达

>>> 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运算符,因此无需调用字典方法来搜索其键

>>> 'abc' in d
True
>>> 'def' in d
False
>>>

该解决方案也更加有效,因为它避免了创建不必要的列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在词典列表中查找词典

来自分类Dev

在列表中查找缺席词典

来自分类Dev

从词典列表中查找用户输入密钥的词典

来自分类Dev

MongoDB在词典列表中查找查询

来自分类Dev

Lisp查找列表中的索引

来自分类Dev

在列表中查找元素的索引

来自分类Dev

在列表中查找元素的索引

来自分类Dev

查找两个词典列表中的普通成员

来自分类Dev

在词典列表中查找键值,然后替换其他值

来自分类Dev

您如何在词典列表中查找出现次数

来自分类Dev

词典中的查找值

来自分类Dev

在列表中查找子列表的索引

来自分类Dev

在浮动列表中查找浮动列表的索引

来自分类Dev

在列表中查找子列表的索引

来自分类Dev

删除基于索引号的嵌入式词典列表中的词典?

来自分类Dev

从Elixir中的列表中查找索引

来自分类Dev

在子子列表中查找元素的索引

来自分类Dev

在python的嵌套列表中查找元素的索引

来自分类Dev

在列表中按索引查找最小/最大

来自分类Dev

在列表中查找连续项的索引

来自分类Dev

提高查找列表中项目索引的速度

来自分类Dev

尝试在列表中查找条目的索引

来自分类Dev

在python的嵌套列表中查找元素的索引

来自分类Dev

使用 Python 3 在列表中查找索引

来自分类Dev

从词典列表中访问词典值

来自分类Dev

从词典列表中创建新词典

来自分类Dev

Python:如何从词典列表中构建词典

来自分类Dev

如何从词典列表中删除词典?

来自分类Dev

使用for循环的词典中的词典列表