python - 如何找到包含特定元素的嵌套列表的最后一次出现的索引?
问题描述
我需要(最终)在嵌套列表中的特定位置插入一个值,但它需要在嵌套列表中最后一次出现特定字符串之后插入......所以我需要首先找到最后一个的索引发生。举个例子可能更有意义(我会概括):
a = 'RPGAccount'
input = [['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=1234567890', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n'], ['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=NA', '4233f2dsfa=abc', 'igg=source', 'id=4g43g34b433435n35n'], ['RPGAdditional', 'addkey=asdf', 'addvalue=false', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'], ['RPGAdditional', 'addkey=device_id', 'addvalue=F309387C-AAF5-478D-95A2-28E9B46105C7', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'], ['RPGAdditional', 'addkey=sdaf', 'addvalue=fixed_ap', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf’]]
b = 1
所以我需要返回 1 的索引,因为 1 是列表的索引
['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=NA', '4233f2dsfa=abc', 'igg=source', 'id=4g43g34b433435n35n']
其中包含字符串“RPGAccount”的最后一次出现
我知道我应该做类似的事情:
for l in input:
for l_ in l:
if a in l_:
print input.index[l]
else:
pass
解决方案:
some_list = []
for l in input:
for l_ in l:
if a in l_:
some_list.append(input.index(l))
else:
pass
location_ = some_list[-1]
print location_
解决方案
你可以这样做:
a = 'RPGAccount'
input = [['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=1234567890', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n'],
['RPGAccount', 'ddi=0', 'pp=0', 'kol=0', 'sddf=NA', '4233f2dsfa=abc', 'igg=source', 'id=4g43g34b433435n35n'],
['RPGAdditional', 'addkey=asdf', 'addvalue=false', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'],
['RPGAdditional', 'addkey=device_id', 'addvalue=F309387C-AAF5-478D-95A2-28E9B46105C7', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf'],
['RPGAdditional', 'addkey=sdaf', 'addvalue=fixed_ap', '4233f2dsfa=abc', 'igg=dev1', 'id=4g43g34b433435n35n', 'tz=asdf']]
# Index of last sublist containing a - if not found returns -1
b = next((len(input) - i - 1 for i, lst in enumerate(reversed(input)) if a in lst), -1)
print(b)
# 1
使用您的循环,执行以下操作会更有效:
location_ = -1
for i, l in enumerate(input):
for l_ in l:
if a in l_:
location_ = i
print location_
# 1
推荐阅读
- python - 如何基于其他两个包含日期的列创建 pandas DataFrame 列?
- spring-security - Spring Secuity 5:持久化和访问 Oauth2 刷新令牌
- c++ - 为什么这个字符串操作不起作用?
- sql - 标量 SQL 函数未返回正确的 JSON 值
- c# - 如何创建在每个给定时间段运行功能的后台服务?使用 C# (asp.net core 3.1.1)
- html - 显示和正确堆叠 ::after 伪元素
- python - (Python) 如何修改元组中的元组
- c# - FTP上传后更改文件权限
- macos - 使用 AppleScript 选择文件
- google-sheets - 使用条件 Google 表格过滤列