我有一个带列表的对象列表:
ls = [
{'id': 1, 'content': ['lorem', 'ipsum']},
{'id': 1, 'content': ['dolor', 'sit', 'amet']},
]
我想获取对象的索引,例如'lorem'
到目前为止我试过了:
'lorem' in [x['content'] for x in ls]
这不会返回true,也不会返回索引。
答案 0 :(得分:1)
此算法将关键字设置为字符串,然后搜索字典列表,以查看关键字是否存在关键字'内容的值。如果确实存在,则返回索引。如果没有,"未找到"归还。
keyword = "dolor"
ls = [
{'id': 1, 'content': ['lorem', 'ipsum']},
{'id': 1, 'content': ['dolor', 'sit', 'amet']},
]
indices = [i['content'].index(keyword) if keyword in i['content'] else "not found" for i in ls]
编辑:
找到没有"未找到"的索引的另一种方法声明可以在下面完成:
[i['content'].index(keyword) for i in ls if keyword in i['content']]
答案 1 :(得分:0)
ls.index([x for x in ls if 'lorem' in x['content']][0])
这种oneline风格具有如下结果:
t = []
for x in ls:
if 'lorem' in x['content']:
t.append(x)
ls.index(t[0])
在我的机器上,输出为:
>>> ls.index([x for x in ls if 'lorem' in x['content']][0])
0
>>> ls.index([x for x in ls if 'ipsum' in x['content']][0])
0
>>> ls.index([x for x in ls if 'dolor' in x['content']][0])
1
>>> ls.index([x for x in ls if 'sit' in x['content']][0])
1
答案 2 :(得分:0)
我愿意:
>>> tgt='ipsum'
>>> [(x, di['content'].index(tgt)) for x, di in enumerate(ls) if tgt in di['content']]
[(0, 1)]
>>> tgt='amet'
>>> [(x, di['content'].index(tgt)) for x, di in enumerate(ls) if tgt in di['content']]
[(1, 2)]
这假设带有['content']
的词典位于词典列表中。